今天继续介绍几个常用的Pandas操作。
|
|
1 2 3 |
import numpy as np import pandas as pd df = pd.read_csv('./economics.csv') |
1.DataFrame的apply方法
|
|
1 |
df[['psavert','uempmed']].apply(lambda x:x.max()-x.min(), axis=1)#axis=1 将函数应用到列 |
|
|
1 |
df.applymap(lambda x:x*10)#applymap 将函数应用到每个元素 |
2.DataFrame的分组
|
|
1 |
df.groupby('unemploy')['psavert'].median()#样例:df.groupby(分组依据)[数据来源].使用操作 |
|
|
1 2 |
condition = df.unemploy > df.unemploy.mean()#使用condition定义分组依据 df.groupby(condition)['psavert'].mean()#分为True和False两组 |
|
|
1 |
df.groupby([condition, df['unemploy']])['psavert'].mean()#True组和False两组分别细分 |
|
|
1 |
df.groupby([df['unemploy'], df['uempmed']])['psavert'].mean()#两级分组 |
|
|
1 |
gb = df.groupby(['unemploy'])#Groupby对象 |
|
|
1 2 |
gb.size()#每组的元素个数 #和DataFrame一样,Groupby对象也有max\idxmin\all\\nunique\quantile\prod等函数,这里不一一列举。 |
|
|
1 |
gb.agg(['skew', 'sum', 'idxmax'])#agg聚合函数,查看每个分组的三个统计量 |
|
|
1 |
gb.agg(lambda x: x.mean()-x.min())#在agg中自定义函数 |
|
|
1 |
gb.filter(lambda x: x.shape[0] > 100)#组过滤 |
|
|
1 |
gb.apply(lambda x: x**2)#组的apply方法 |
3.DataFrame的连接
|
|
1 2 3 |
df1 = df[0:10] df2 = df[10:20] df1.merge(df2, on='date', how='outer')#merge表示关系型连接,包括左连接、右连接、内连接和外(全)连接 |
|
|
1 |
pd.concat([df1, df2], axis=0)#concat是方向性连接,axis=0表示纵向连接 |
|
|
1 2 3 4 |
def choose_min(x1, x2): min = x1.where(x1<x2, x1) return min df1.combine(df2, choose_min)#使用combine函数自定义连接规则 |
下一期是Pandas的常见数据处理,包括缺失数据、文本数据、分类数据和时序数据。