pandas十分钟入门
1、生成一个DataFrame数据
```
import pandas as pd
import numpy as np
# 生成一个固定频率的时间索引
dates = pd.date_range('20190511',periods=6)
df = pd.DataFrame(np.random.randn(6,4),index=dates, columns=list('ABCD'))
print(df)
```
结果:
```
A B C D
2019-05-11 -0.176908 -0.075623 -0.033213 -1.055402
2019-05-12 -0.996933 0.246105 0.850962 0.357381
2019-05-13 1.295686 -1.075621 0.556757 -0.036692
2019-05-14 -1.432743 0.566759 -0.223873 0.172088
2019-05-15 1.409429 -1.100393 -0.129896 -0.336664
2019-05-16 -1.780095 0.220246 -0.150761 0.492497
```
2、查看数据
| 函数 | 说明 |
| --- | --- |
| df.head(int n) | 查看前n个数据 |
| df.tail(int n) | 查看后n个数据 |
| df.index | 显示索引 |
| df.columns | 显示列 |
| df.values | 显示底层numpy数据 |
| df.describe() | 描述显示数据的快速统计摘要 |
| df.T | 调换数据 |
| df.sort_index(axis=1, ascending=False) | 通过轴排序,axis=0按index排序,axis=1按columns排序,ascending=True升序,False降序|
| df.sort_values(by='B') | 按值排序,by=列名 |
3、选择区块
| 函数 | 说明 |
| --- | --- |
| df['A'] | 选择一列,产生一个系列,相当于df.A |
| df['20170102':'20170103'] | 选择通过[]操作符,选择切片行 |
| df[0:3] | 同上 |
4、按标签选择
| 函数 | 说明 |
| --- | --- |
|df.loc[dates[0]]|使用标签获取横截面|
|df.loc[:,['A','B']]|通过标签选择多轴|
|df.loc['20170102':'20170104',['A','B']]|显示标签切片,包括两个端点|
|df.loc['20170102',['A','B']]|减少返回对象的尺寸(大小)|
|df.loc[dates[0],'A']|获得标量值,即index和columns给定的值|
|df.at[dates[0],'A']|快速访问标量(等同于先前的方法)|
5、通过位置选择
| 函数 | 说明 |
| --- | --- |
|df.iloc[3]|通过传递的整数的位置选择,得到的一行的数据|
|df.iloc[3:5,0:2]|通过整数切片,类似于numpy/python|
|df.iloc[[1,2,4],[0,2]]|通过整数位置的列表,类似于numpy/python样式|
|df.iloc[1:3,:]|明确切片行|
|df.iloc[:,1:3]||
|df.iloc[1,1]|要明确获取值|
|df.iat[1,1]|要快速访问标量(等同于先前的方法),|
6、布尔索引
| 函数 | 说明 |
| --- | --- |
|df[df.A > 0]|使用单列的值来选择数据|
|df[df > 0]|从满足布尔条件的DataFrame中选择值,不满足条件的值改为NAN|
|df2[df2['E'].isin(['two','four'])|使用isin()方法进行过滤|