10分钟 Pandas 入门
Pandas 是 Python 做数据分析最重要的模块之一,本文源自Pandas 作者 Wes McKinney 写的 10-minute tour of pandas。
首先安装 Pandas 和相关的两个包 numpy、matplotlib
1 | pip install pandas |
导入 pandas、numpy、matplotlib
1 | import pandas as pd |
对象创建
Series 是一个序列,使用 Pandas 创建一个整数索引的序列:
1 | s = pd.Series([1,3,5,np.nan,6,8]) |
DataFrame 是有多个列的数据表,每个列拥有一个 label,当然,DataFrame 也有索引:
1 | dates = pd.date_range('20170101', periods=6) |
通过一个对象字典创建 DataFrame, dict 的每个 value 会被转化成一个 Series:
1 | df2 = pd.DataFrame({ 'A' : 1., |
查看每列的格式:
1 | df2.dtypes |
查看某一列的具体值
1 | df2.C |
查看数据
使用 head() 查看 DataFrame 前几行; tail() 查看后几行:
1 | df.head(3) |
实际上,DataFrame 内部用 numpy 格式存储数据。你也可以单独查看 index、columns 和 values:
1 | df.index |
使用 describe() 可以帮你做一些数据的概要
1 | df.describe() |
DataFrame 的矩阵转置
1 | df.T |
DataFrame 排序
(1) 使用 sort_index 按照索引排序
ascending 参数默认值为 True
axis = 0 指的是安装行排序,axis = 1 是指安装列排序:
1 | df.sort_index(axis=1, ascending=False) |
(2) 使用 sort_values 按照值排序
1 | df.sort_values(by='B', ascending=False) |
选择
行/列
选择单独的列:
1 | df['A'] |
切片,使用[]选择特定的行
1 | df[0:3] |
通过 label 选择
通过 label 选择(dates[0]=Timestamp(‘2017-01-01 00:00:00’, offset=‘D’))
1 | df.loc[dates[0]] |
多选,「A:B」 表示从 A 到 B
1 | df.loc[:,['A','B']] |
通过下标选择
选择第四行所有元素
1 | df.iloc[3] |
选出34行,01列
1 | df.iloc[3:5,0:2] |
选择单个元素
1 | df.iloc[1,1] |
比较运算
1 | df[df.A > 0] |
选出大于0 的全部元素,没有填充的值等于 NaN
1 | df[df > 0] |
isin() 函数:是否在集合中
1 | df2 = df.copy() |
设置
按照 index 给 DataFrame 添加新的列:
1 | s1 = pd.Series([1,2,3,4,5,6], index=pd.date_range('20170102', periods=6)) |
通过 label 设置
1 | df.at[dates[0],'A'] = 0 |
通过下标设置
1 | df.iat[0,1] = 0 |
用 numpy 数组设置
1 | df.loc[:,'D'] = np.array([5] * len(df)) |
使用比较设置
1 | df2 = df.copy() |