本文系10 Minutes to pandas文档的个人学习摘要,不包含全部内容。
0. 数据结构介绍
pandas使用两种重要的数据结构:Series和DataFrame。
- Series
是一种类似于一维数组的对象。可以使用数字索引和字符索引。我们可以通过values和index属性获取序列的索引和值列表。
创建:
我们还可使用python的字典来初始化创建一个series,字典的键作为序列的索引,值作为对应的值。
在pandas中,series一个最重要的功能是:在算术运算中会自动对齐相同索引的数据。
s.value_counts() 统计元素出现次数
序列有一个**'str' **属性,它可以使用常见的string函数,如 s.str.lower()
- DataFrame
DataFrame是pandas中最重要、使用最频繁的数据结构,这次的学习笔记内容也都是对这种数据结构进行操作。它是一种表格型数据,既有行索引又有列索引,本质是二维Series。创建DataFrame的方法很多 ,最简单的是传入一个列表或numpy数组组成的字典。
下面着重介绍dataframe的相关操作
1. 创建dataframe:
查看df的信息可以选用这几个函数: df.head(), df.tail(), df.describe(),,其中**describe() **显示df的各种统计信息(平均数,中位数,标准差,最值,分位数),在数据挖掘处理数据时会用到。df.info()显示其属性信息
2. 检索数据
dataframe的检索可以从两方向进行:行和列。我们可以使用行列标签进行检索。
2.1 Getting:
df['a'] <==> df.a返回a列数据值,是序列类型
df[0:3]返回前三行,dataframe类型2.2 按标签检索:df.loc[rows_number, columns_list]
注 因为行默认数字索引,这里1:4应理解为label,不是position。
- 2.3 按位置检索: df.iloc[row_number, col_number] ,要求给出的参数必须是整型,即第几行第几列。
- 2.4 布尔索引,常用这种方法来筛选数据
- 2.5 Setting:
df.at[] & df.iat()类似于df.loc[] & df.iloc[]。个人理解是专门用来修改值得吧(虽然loc/iloc也可以 (:
3. 缺失数据处理
pandas使用 np.nan(not a numeric)标识缺失数据,NaN不会参与后续计算。
-
3.1 直接丢弃
df.dropna(how='any', axis = 0)
axis:指定丢弃行(0)或列(1)
how:可选all或any, 默认any。与axis共同作用
举个例子, df.dropna(how='any', axis = 0) 只要某行数据中有NaN,那么就删除这一行。all要求全部是NaN才删除。
- 3.2 填充
df.fillna(value=x)用x填充缺少的数据。还可以使用插值法、Imputer或回归预测来填充这些数据。
- 3.3 检查df中有哪些NaN:
pd.isna(df)返回一个布尔型的DataFrame
4. 操作
- 4.1 统计信息: df.mean() / sum() / min()/ max()/ std()/ var()/ corr()/ cov()。
- 4.2 函数式:apply函数,比如
df.apply(np.cumsum()),df.apply(lambda x: x.max() - x.min())
5. 合并
5.1 concat函数,C风格
pd.concat([df1, df2])5.2 join函数,SQL风格
5.3 append,
df.append(df1, ignore_index=True)分组, 分组在数据分析中很常见
df.groupby('a'), 和SQL里的groupby有点像。
groupby函数处理涉及到一下几个步骤:
- 按给定条件划分数据为组
- 对每个组应用函数处理
- 将处理结果组合到某种数据结构
关于分组的知识,以后详谈~嘻嘻
6. 后续的时间序列,分类,Plotting的内容接着写。
简书小白,第一次写文章,欢迎大家指正。bye~