Pandas学习随笔(1)

前言

虽然说一直都有使用过python的pandas,但是其实很多时候都是使用些基本的东西,毕竟如果不注重效率的话,很多时候也不用在意更加高级的用法,或者更加基础和正规的用法。由于最近多了个经常会被抠细节的师妹,我觉得还是用一些业余时间将这个pandas快速的过一遍,而且其实也经常遇到类似于reshape这样的操作,虽然可以用更为复杂的方法解决,但是毕竟不够优雅。以下从一个半路开始学起pandas的人的角度开始记录pandas中的一些内容。不可能面面俱到,但可能会有写独特的角度,以及可以快速的浏览很多。
主要使用的教程就是pandas官方的doc

10min快速入门部分

import pandas as pd
# 创建object
pd.date_range #创建时间序列
pd.DataFrame #从多种input创建dataframe,主要使用的数据结构
# 查看object
import pandas.DataFrame as df
df.head
df.tail
df.describe
# 获取
df['A'] #获取A列
df[0:3] #获取前3行
df.loc[]
df.iloc[]
df.at[] #等同于df.loc,但似乎用这个来赋值更快速
df.iat[] #等同于df.iloc 更快
# 布尔值
df[df.A > 0]
# 赋值
#类似于获取值与布尔值
df2[df2 > 0] = -df2 #这个比较神奇,会自动截取
# 处理缺失值
df.reindex #可以用以重新构造轴的形状,缺失值以np.nan填充
df.dropnan #对某一轴进行操作,若含有nan可直接丢一行/列,可选nan的数量阈值
df.fillna #同上,不过是填充
df.isna #返回同等shap的布尔矩阵
# 计算操作
df.mean 
pd.Series.shift # 很神奇的操作,偏移N位,多出的值以np.nan填充,用以特殊操作吧。例如处理时间序列时,可用于规整、对齐时间
df.sub

# 映射操作
df.apply # 循环递归指定的轴,每一个轴抽出作为series作参数传入指定的函数。

# 其它操作
pd.Series.value_counts # 可以作为collections.Counter的pandas版本
pd.Series.str.blablabla  # 对每个对象以string的方法进行变换,例如大小写转化

# 合并部分
pd.concat
pd.merge
pd.DataFrame.join

# 增加行列
pd.DataFrame.append  # 增加行,而且多出的列会自动扩展
pd.DataFrame.loc # 增加列

# 分组   较为陌生的部分
## 分
df.groupby # 分组方式可以是指定轴的值,也可以是一个函数,例如可以从原本只是样本id,利用函数将其以metadata中的信息来分组
## 映射函数到各组
df.groupby.agg() # 对每列进行np.sum、np.mean等方法的操作
## 有趣的例子
df = pd.DataFrame({'a':[1,0,0], 'b':[0,1,0], 'c':[1,0,0], 'd':[2,3,4]})
df.groupby(df.sum(), axis=1).sum()
# 用df.sum()作为分组的series,将df的4列分为2组,按照这个组别,进行sum,index不受影响,所以得到3x2的结果。

# 重塑 (Reshape)
df.stack  # stack 代表压缩,默认是最后一个轴压缩,并成为multiindex的一部分
df.unstack # 即解压缩,所以可以将倒数第一个index进行解压缩,添加了最后一个轴,同样的也可以指定multiindex的其它轴,以序号代表,默认是mutliindex的最后一列。
df.pivot_table 
df.pivot  # 以上两个应该差不多,都是可以从原df中抽取指定列,重新构造成index、columns、values等的。对于分离类别变量和连续变量的表格十分有用,并且也是重塑了df的形状。

# df的数据类型:类别(category)
# 可以通过设置类型来进行类别的操作,例如统计、批量快速重命名、

# IO操作
pass 很熟悉了

(感觉自己只是翻译了一遍,外加自己查阅了一些官方的help,随意吧。。。见仁见智吧。。。pass去下个章节了。。)

你可能感兴趣的:(Pandas学习随笔(1))