十分钟掌握Pandas(上)——来自官网API

其实不止10分钟,这么多,至少一天

一、numpy和pandas

numpy是矩阵计算库,pandas是数据分析库,关于百度百科,有对pandas的介绍。

pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

二、数据类型

numpy pandas
ndArray相当于n维矩阵 Series(类似一维数组,或者kv值对)
在numpy中只有ndArray一种,但是ndArray有很多种数据类型 DataFrame(使用csv读入数据是dataFrame)

二、官网API

1.API之前,我们应该学习数据导入

pandas可以导入csv数据集

import pandas as pd

food_info = pd.read_csv("xxx.csv")
print(type(food_info))
print(food_info)
2.pd.Series 获取一个Series类型
import numpy as np
import pandas as pd
# 我们可以发现,这边可以使用numpy,证明pandas是基于numpy构建的
s = pd.Series([1,3,5,np.nan,6,8])
print(s)
打印
0   1.0
1   3.0
2   5.0
3   NaN
4   6.0
5   8.0
dtype: float64
3.获取日期

从第一个date开始,获取6个连续日期

dates = pd.date_range('20130101',periods=6)
dates
打印
DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',
              '2013-01-05', '2013-01-06'],
            dtype='datetime64[ns]', freq='D')
4.第一次使用dataframe类型

np.random.randn(6,4) 获取6行4列数据集

index是列

columns是行

df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
df
打印结果
A B C D
2013-01-01 0.284681 1.881328 0.310425 -2.527329
2013-01-02 -0.209723 -1.410186 0.865336 0.893260
2013-01-03 -0.095578 0.576282 -1.347052 -0.055370
2013-01-04 -1.216527 0.423745 -1.110668 -1.682405
2013-01-05 0.275501 -0.844457 -0.954631 2.312578
2013-01-06 -1.384552 1.539255 -1.499076 -0.916121
5.查看数据类型
df2.dtypes
A           float64
B   datetime64[ns]
C           float32
D             int32
E         category
F           object
dtype: object
6.查看前两行
df.head(2)
A   B   C   D
2013-01-01 0.284681 1.881328 0.310425 -2.527329
2013-01-02 -0.209723 -1.410186 0.865336 0.893260
7.查看尾三行
df.tail(3)
A   B   C   D
2013-01-04 -1.216527 0.423745 -1.110668 -1.682405
2013-01-05 0.275501 -0.844457 -0.954631 2.312578
2013-01-06 -1.384552 1.539255 -1.499076 -0.916121
8.查看索引(行名)
df.index
DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',
              '2013-01-05', '2013-01-06'],
            dtype='datetime64[ns]', freq='D')
9.查看列名
df.columns
Index(['A', 'B', 'C', 'D'], dtype='object')
10.转化为numpy类型的数组
df.to_numpy()
array([[ 0.28468077,  1.8813276 ,  0.31042514, -2.52732926],
      [-0.20972286, -1.41018638, 0.86533622, 0.89325968],
      [-0.09557804, 0.57628249, -1.34705203, -0.05537029],
      [-1.21652719, 0.42374501, -1.11066844, -1.6824053 ],
      [ 0.27550116, -0.84445705, -0.95463056, 2.31257796],
      [-1.38455249, 1.53925476, -1.49907627, -0.91612064]])
11.查看描述
df.describe()
A   B   C   D
count 6.000000 6.000000 6.000000 6.000000
mean -0.391033 0.360994 -0.622611 -0.329231
std 0.733423 1.291526 0.972213 1.763848
min -1.384552 -1.410186 -1.499076 -2.527329
25% -0.964826 -0.527407 -1.287956 -1.490834
50% -0.152650 0.500014 -1.032650 -0.485745
75% 0.182731 1.298512 -0.005839 0.656102
max 0.284681 1.881328 0.865336 2.312578

依次为:总数、均值、标准差、最小值、25%的值、50%的值、75%的值、最大值

12.转置矩阵
df.T
    2013-01-01  2013-01-02  2013-01-03  2013-01-04  2013-01-05  2013-01-06
A 0.284681 -0.209723 -0.095578 -1.216527 0.275501 -1.384552
B 1.881328 -1.410186 0.576282 0.423745 -0.844457 1.539255
C 0.310425 0.865336 -1.347052 -1.110668 -0.954631 -1.499076
D -2.527329 0.893260 -0.055370 -1.682405 2.312578 -0.916121
13.索引排序,按照维度为一(即横坐标),排序,升序为false
df.sort_index(axis=1,ascending=False)

D C B A
2013-01-01 -2.527329 0.310425 1.881328 0.284681
2013-01-02 0.893260 0.865336 -1.410186 -0.209723
2013-01-03 -0.055370 -1.347052 0.576282 -0.095578
2013-01-04 -1.682405 -1.110668 0.423745 -1.216527
2013-01-05 2.312578 -0.954631 -0.844457 0.275501
2013-01-06 -0.916121 -1.499076 1.539255 -1.384552
14.按照B进行横向排序
df.sort_values(by='B')
A   B   C   D
2013-01-02 -0.209723 -1.410186 0.865336 0.893260
2013-01-05 0.275501 -0.844457 -0.954631 2.312578
2013-01-04 -1.216527 0.423745 -1.110668 -1.682405
2013-01-03 -0.095578 0.576282 -1.347052 -0.055370
2013-01-06 -1.384552 1.539255 -1.499076 -0.916121
2013-01-01 0.284681 1.881328 0.310425 -2.527329
15.获取列标为'A'的
df['A']
2013-01-01    0.284681
2013-01-02   -0.209723
2013-01-03   -0.095578
2013-01-04   -1.216527
2013-01-05   0.275501
2013-01-06   -1.384552
Freq: D, Name: A, dtype: float64
16.获取横标切片
df[0:3]
A   B   C   D
2013-01-01 0.284681 1.881328 0.310425 -2.527329
2013-01-02 -0.209723 -1.410186 0.865336 0.893260
2013-01-03 -0.095578 0.576282 -1.347052 -0.055370
17.获取横标切片(value)
df['20130102':'20130104']
A   B   C   D
2013-01-02 -0.209723 -1.410186 0.865336 0.893260
2013-01-03 -0.095578 0.576282 -1.347052 -0.055370
2013-01-04 -1.216527 0.423745 -1.110668 -1.682405
18.获取第一行
df.loc[dates[0]]
A    0.284681
B   1.881328
C   0.310425
D   -2.527329
Name: 2013-01-01 00:00:00, dtype: float64
19.获取行切片
df.loc[:,['A','B']]
A   B
2013-01-01 0.284681 1.881328
2013-01-02 -0.209723 -1.410186
2013-01-03 -0.095578 0.576282
2013-01-04 -1.216527 0.423745
2013-01-05 0.275501 -0.844457
2013-01-06 -1.384552 1.539255
df.loc['20130102':'20130104',['A','B']]
df.loc['20130102',['A','B']]
20.获取唯一元素
df.loc[dates[0],'A']//这是唯一元素
df.at[dates[0],'A']//与上面一样,官网这样解释For getting fast access to a scalar,更快的访问维度数据
21.通过索引获取第一行(之前的loc是通过值获取行)
df.iloc[3]
A    1.191786
B   -1.384943
C   -1.463160
D   0.527332
Name: 2013-01-04 00:00:00, dtype: float64
22.索引获取切片
df.iloc[3:5,0:2]
df.iloc[[1,2,4],[0,2]]
df.iloc[1:3,:]
df.iloc[1,1]
df.iat[1,1]
df[df.A>0]
23.拷贝赋值
df2 = df.copy()
df2['E'] = ['one','two','three','four','five','six']
df2

结果多一列E

24.进行判断是否贼取值
df2[df2['E'].isin(['two','four'])]
输出:
A B C D E
2013-01-02 0.847134 -0.003377 0.353925 0.438065 two
2013-01-04 1.191786 -1.384943 -1.463160 0.527332 four
25.进行按照日期取6个序列
s1 = pd.Series([1,2,3,4,5,6],index=pd.date_range('20130102',periods=6))
s1
26.进行取赋值
df['F']=s1
df
A   B   C   D   F
2013-01-01 0.284681 1.881328 0.310425 -2.527329 NaN
2013-01-02 -0.209723 -1.410186 0.865336 0.893260 1.0
2013-01-03 -0.095578 0.576282 -1.347052 -0.055370 2.0
2013-01-04 -1.216527 0.423745 -1.110668 -1.682405 3.0
2013-01-05 0.275501 -0.844457 -0.954631 2.312578 4.0
2013-01-06 -1.384552 1.539255 -1.499076 -0.916121 5.0

十分钟掌握Pandas(上)——来自官网API的更多相关文章

  1. 十分钟了解pandas

    十分钟掌握Pandas(上)--来自官网API 一.numpy和pandas numpy是矩阵计算库,pandas是数据分析库,关于百度百科,有对pandas的介绍. pandas 是基于NumPy ...

  2. 十分钟掌握pandas(pandas官方文档翻译)

    十分钟掌握pandas 文档版本:0.20.3 这是一个对pandas简短的介绍,适合新用户.你可以在Cookbook中查看更详细的内容. 通常,我们要像下面一样导入一些包. In [1]: impo ...

  3. 【朝花夕拾】Android性能篇之(八)来自官网的自白

    前言 转载请声明,转自[https://www.cnblogs.com/andy-songwei/p/10823372.html],谢谢! Android性能优化无疑是Android中的一个重点,也是 ...

  4. 比特魔方原创,用十分钟在Cocos-BCX上发行了自己的NFT

    比特魔方原创 作者 | 第二个区块 出品 |比特魔方 NFT正在积累越来越多的共识.每看到人们讨论NFT,我隐约就能联想到2019年人们谈论DeFi的时候.隐约让我感到欠缺的是,相对2019年的DeF ...

  5. (转)十分钟入门pandas

    本文是对pandas官方网站上<10 Minutes to pandas>的一个简单的翻译,原文在这里.这篇文章是对pandas的一个简单的介绍,详细的介绍请参考:Cookbook . 习 ...

  6. 做个伪IE浏览器?!【来自官网】

    原文:docwiki.embarcadero.com/RADStudio/Seattle/en/Building_a_VCL_Forms_Web_Browser_Application 选择File ...

  7. 【转载】koa相关知识(来自官网)

    什么是Koa? koa 是由 Express 原班人马打造的,致力于成为一个更小.更富有表现力.更健壮的 Web 框架.使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重 ...

  8. Vertx上传 官网Demo Java版

    package io.vertx.example.web.upload; import io.vertx.core.AbstractVerticle; import io.vertx.example. ...

  9. Content Providers的步骤,来自官网文档

    Content Providers In this document Content provider basics Querying a content provider Modifying dat ...

随机推荐

  1. 15、Vue CLI 3+tinymce 5富文本编辑器整合

    富文本编辑器里大佬们都说tinymce NB! 插件安装 inymce官方提供了一个vue的组件tinymce-vue 如果有注册或购买过服务的话,直接通过组件配置api-key直接使用,懒的注册或者 ...

  2. 找出整数数组中出现次数超过数组长度一半的元素(Java)

    Question:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字 package com.study.zhipengs.test; import java.util.Arrays; im ...

  3. Appium移动自动化测试-----(二)安装 Android SDK

    安装Android SDK Android SDK(Software Development Kit,软件开发工具包)提供了 Android API 库和开发工具构建,测试和调试应用程序.简单来讲,A ...

  4. 《ucore lab4》实验报告

    资源 ucore在线实验指导书 我的ucore实验代码 练习1:分配并初始化一个进程控制块 题目 alloc_proc函数(位于kern/process/proc.c中) 负责分配并返回一个新的str ...

  5. HDU 1016Presentation Error

    这是一道典型的DFS题目.幻想有n个箱子,每次都向箱子里扔一个数,(当然第一个是必定是1,因为题目要求按字典序输出).判断输出的条件就是,当我移动到第n+1个箱子的时候,就要return了,当然还要判 ...

  6. dede5.7-修改自定义表单

    最近刚好帮客户做一个网站,需要用到dede的自定义表单功能.可是有个这样的需求,就是当表单提交成功后,要返回一个自定义页面的提示功能!可能是觉得dede自带的提示太low的原因吧!(一不小心又黑了下)

  7. ~postman基础断言方法

    postman官方文档:https://learning.getpostman.com/docs/postman/scripts/test_examples/ 断言1:检查响应主体是否包含字符串 // ...

  8. PAT(B) 1071 小赌怡情(Java)

    题目链接:1071 小赌怡情 (15 point(s)) 题目描述 常言道"小赌怡情".这是一个很简单的小游戏:首先由计算机给出第一个整数:然后玩家下注赌第二个整数将会比第一个数大 ...

  9. C++中深拷贝与浅拷贝

    浅拷贝和深拷贝 在某些状况下,类内成员变量需要动态开辟堆内存,如果实行位拷贝,也就是把对象里的值完全复制给另一个对象,如A=B.这时,如果B中有一个成员变量指针已经申请了内存,那A中的那个成员变量也指 ...

  10. TZOJ1299: 畅通工程

    #include<stdio.h> #include<math.h> #include<string.h> #include<algorithm> #i ...