Pandas笔记
注意:这篇文档只适用于高考
,完全不是Pandas
文档。
DataFrame
提供数据:
ID | data01 | data02 | data03 | data04 | data05 | data06 | data07 | data08 |
---|---|---|---|---|---|---|---|---|
1 | 810 | 841 | 947 | 221 | 114 | 886 | 489 | 380 |
2 | 903 | 225 | 742 | 722 | 536 | 448 | 224 | 917 |
3 | 387 | 380 | 853 | 336 | 963 | 384 | 22 | 360 |
4 | 926 | 487 | 321 | 819 | 427 | 944 | 615 | 178 |
5 | 24 | 667 | 199 | 842 | 323 | 565 | 556 | 90 |
6 | 974 | 661 | 443 | 753 | 888 | 293 | 730 | 117 |
读入数据
1 | df = pd.read_excel("test.xlsx") |
1 | ID data01 data02 data03 data04 data05 data06 data07 data08 |
把首列设为index
1 | df = pd.read_excel("test.xlsx",index_col=0) |
1 | data01 data02 data03 data04 data05 data06 data07 data08 |
一些操作
.T
return DataFrame
行列转换
1 | df = pd.read_excel("test.xlsx") |
1 | ID data01 data02 data03 data04 data05 data06 data07 data08 |
.at[index,columns]
读取
return values
1 | print(df.at[5,"ID"]) |
1 | 6 |
操作
1 | print(df.at[4,"data06"]) |
1 | 700 |
.columns
return 类似list
1 | print(df.columns) |
1 | Index(['ID', 'data01', 'data02', 'data03', 'data04', 'data05', 'data06', |
.index
return 类似list
1 | print(df.index) |
1 | RangeIndex(start=0, stop=6, step=1) |
.pop(columns)
删除某一列
然后将删除的值返回
return Series
1 | print(df) |
1 | ID data01 data02 data03 data04 data05 data06 data07 data08 |
.size
获取整个表格数据个数
return int
1 | print(df.size) |
1 | 54 |
.count(axis=0, numeric_only=False)
return Series
更改数据:
ID | name | data01 | data02 | data03 | data04 | data05 | data06 | data07 | data08 |
---|---|---|---|---|---|---|---|---|---|
1 | John | 215 | 406 | 844 | 901 | 202 | 41 | 352 | 266 |
2 | Bob | 308 | 612 | 528 | 546 | 39 | 95 | 146 | 163 |
3 | Michael | 608 | 695 | 620 | 707 | 679 | 44 | 255 | 793 |
4 | Alice | 466 | 275 | 154 | 519 | 193 | 529 | 338 | 480 |
5 | Merry | 867 | 545 | 283 | 475 | 867 | 709 | 118 | 359 |
6 | Harry | 975 | 195 | 980 | 997 | 218 | 734 | 546 | 338 |
1 | print(df.count()) |
1 | ID 6 |
.drop(labels=None, axis=0, index=None, columns=None)
return DataFrame
删除列
1 | print(df) |
或者
1 | print(df) |
1 | ID name data01 data02 data03 data04 data05 data06 data07 data08 |
删除行
1 | print(df) |
或者
1 | print(df) |
1 | ID name data01 data02 data03 data04 data05 data06 data07 data08 |
.groupby(axis=0, as_index=True, sort=True)
return DataFrameGroupBy
更改数据:
ID | name | data01 | data02 | data03 | data04 |
---|---|---|---|---|---|
1 | John | 285 | 53 | 863 | 853 |
2 | Bob | 349 | 568 | 33 | 322 |
3 | Michael | 886 | 840 | 91 | 726 |
4 | Alice | 67 | 752 | 106 | 75 |
5 | Merry | 443 | 414 | 956 | 496 |
6 | Harry | 235 | 860 | 230 | 211 |
7 | John | 800 | 604 | 245 | 659 |
8 | Bob | 693 | 558 | 761 | 266 |
9 | Michael | 532 | 577 | 504 | 381 |
10 | Alice | 703 | 118 | 867 | 707 |
11 | Merry | 253 | 861 | 240 | 334 |
12 | Harry | 585 | 288 | 361 | 135 |
13 | John | 828 | 974 | 814 | 811 |
14 | Bob | 730 | 781 | 13 | 693 |
15 | Michael | 274 | 3 | 521 | 624 |
16 | Alice | 437 | 587 | 476 | 683 |
17 | John | 494 | 936 | 475 | 396 |
18 | Bob | 390 | 535 | 506 | 874 |
19 | Michael | 892 | 70 | 203 | 417 |
20 | Alice | 510 | 464 | 510 | 70 |
1 | print(df) |
1 | ID name data01 data02 data03 data04 |
.count()
返回每个群组内项目的计数
return DataFrame
1 | df_gb = df.groupby("name") |
1 | ID data01 data02 data03 data04 |
.max(numeric_only=False)
计算每个群组中的最大值
注意: numeric_only=False
在教科书版本中默认为True
,这个选项若为False
会使非整形和浮点型条目报错!!!
以下.min()
、.mean()
、.sum()
同理.
return DataFrame
1 | df_gb = df.groupby("name") |
1 | ID data01 data02 data03 data04 |
.min(numeric_only=False)
计算每个群组中的最小值
return DataFrame
1 | df_gb = df.groupby("name") |
1 | ID data01 data02 data03 data04 |
.mean(numeric_only=False)
计算每个群组中数据的平均数
return DataFrame
1 | df_gb = df.groupby("name") |
1 | ID data01 data02 data03 data04 |
.sum(numeric_only=False)
给每个群组中的数据求和
return DataFrame
1 | df_gb = df.groupby("name") |
1 | ID data01 data02 data03 data04 |
.head(n=5)
返回每个群组中前n
项
return DataFrame
1 | df_gb = df.groupby("name") |
1 | ID name data01 data02 data03 data04 |
.tail(n=5)
返回每个群组中后n
项
return DataFrame
1 | df_gb = df.groupby("name") |
1 | ID name data01 data02 data03 data04 |
.head(n=5)
返回DataFrame
的前n
项
return DataFrame
1 | print(df.head()) |
1 | ID name data01 data02 data03 data04 |
.tail(n=5)
返回DataFrame
的后n
项
return DataFrame
1 | print(df.tail()) |
1 | ID name data01 data02 data03 data04 |
.max(axis=0, numeric_only=False)
返回行或列的最大值
return Series
1 | print(df.max()) |
1 | ID 20 |
对于axis=True
我们发现
1 | print(df.max(axis=1)) |
1 | Traceback (most recent call last): |
这就是上面说的numeric_only=False
造成的
我们可以看到错误为
1 | TypeError: '>=' not supported between instances of 'int' and 'str' |
但考试笔试请忽略
正确的应该是
1 | print(df.max(axis=1, numeric_only=True)) |
这样会默认省掉name
这一列
1 | 0 863 |
.min(axis=0, numeric_only=False)
返回行或列的最小值
return Series
1 | print(df.min()) |
1 | ID 1 |
.mean(axis=0, numeric_only=False)
返回行或列的平均值
return Series
1 | print(df.mean(numeric_only=True)) |
1 | ID 10.50 |
.sum(axis=0, numeric_only=False)
对行或列求和
return Series
1 | print(df.sum()) |
1 | ID 210 |
.to_excel() .to_csv() …
导出到excel
,csv
等等
return .xlsx
, .xls
, .csv
…
1 | df.to_excel("export.xlsx") |