Pandas自用笔记

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

读取文件

 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用法详解

Licensed under CC BY-NC-SA 4.0
最后更新于 0001-01-01 00:00 UTC
使用 Hugo 构建
主题 StackJimmy 设计