代码不写就会忘
  笔记不整理就会乱


读取文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import os
import pandas as pd

abs_path = os.path.abspath(__file__)
proj_path = os.path.abspath(f"{abs_path}/../")
data_path = os.path.join(proj_path, 'data.pkl')

# 读取pkl
df = pd.read_pickle(data_path)
# 按列读取pkl
df = pd.read_pickle(data_path)[['id'] + ['name'] + ['location']]

# 保存pkl
df.to_pickle(data_path)
# 保存csv
df.to_csv('data.csv', index=False, encoding='utf-8-sig')

更多见https://pandas.pydata.org/docs/user_guide/io.html

显示完整df

1
2
3
4
pd.set_option('display.width', None)
pd.set_option('display.max_rows', None)
pd.set_option('display.max_colwidth', None)
print(df)

groupby

该函数是基于行的操作。

1
df[](指输出数据的结果属性名称).groupby([df[属性],df[属性])(指分类的属性,数据的限定定语,可以有多个).mean()(对于数据的计算方式——函数名称)

例:

1
df['score'].groupby([df["id"],df["name"]]).mean()

单分组

1
2
3
df.groupby("id")
df.groupby("id").describe().unstack()
df.groupby("id")["location"].describe().unstack()#用id分组,只看location

多分组

1
df.groupby(["id","name"]).mean()

agg

该函数是基于列的聚合操作。

1
A.groupby(A["生日"].apply(lambda x:x.year)).count()

更多例子:

1
2
3
4
info_df = df. groupby(["id", "name"], sort=False).count()[["city"]]#根据id和name分组统计city个数

info_df = df.groupby(["id", "name"], as_index=False, sort=True).agg({"city": lambda x: len(set(list(x)))}).reset_index(drop=True).rename(columns={"city": "city_cnt"})
#根据id和name分组统计city的个数并重命名city列为city_cnt

merge

1
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)

例:

1
2
3
4
5
6
7
8
import pandas as pd
df1 = pd.DataFrame({'key':list('bbaca'), 'data1':range(5)})
print(df1)
df2 = pd.DataFrame({'key':['a','b','d'], 'data2':range(3)})
print(df2)

print(pd.merge(df1, df2))
print(pd.merge(df2, df1))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  key  data1
0 b 0
1 b 1
2 a 2
3 c 3
4 a 4
key data2
0 a 0
1 b 1
2 d 2
key data1 data2
0 b 0 1
1 b 1 1
2 a 2 0
3 a 4 0
key data2 data1
0 a 0 2
1 a 0 4
2 b 1 0
3 b 1 1

更多见https://pandas.pydata.org/docs/user_guide/merging.html

参考文献

pandas官方文档

python中groupby函数详解(非常容易懂)

[Python3]pandas.merge用法详解