Pandas讲义

可以说是挺全面的了

我基本上把能找到的题涉及到的pandas知识点,以及我觉得非常非常可能要考的,全部罗列在这里,后期补充的话见

http://blog.a152.top

对象简介

代码的一般操作流程(一般的大题填空)
导入包,读取文件,处理一下,计算处理,绘图,保存
考的环节大概都是
1.读取的文件 2.计算过程中的函数名,参数,选择语句等
3.绘图中,大部分考画图的函数是啥,内容是啥
4.保存好像没怎么考过,但是见过。。。

In [117]:

import pandas as pd
df=pd.read_excel('tzjc.xlsx')

In [118]:

df

Out[118]:

姓名 性别 身高 体重 bmi result
0 1.70 60 NaN NaN
1 1.75 70 NaN NaN
2 1.80 85 NaN NaN
3 1.62 55 NaN NaN
4 1.58 50 NaN NaN
5 1.82 80 NaN NaN
6 1.67 49 NaN NaN

什么时候加括号,什么时候不加括号?

这是一个最基本的问题,但却涉及了最根本的原则,
当我们print(df.index)的时候
有人知道,df和index分别是什么么?

df是一个对象,index是df这个对象的属性

同样道理,我们用df['身高'].max()
调用的是df['身高']对象的max方法
所以,归根到底就这么俩,属性,方法。。。

In [119]:

演示一下

df.index

Out[119]:

RangeIndex(start=0, stop=7, step=1)
In [120]:

df.values

Out[120]:

array([['张', '男', 1.7, 60, nan, nan],
['李', '男', 1.75, 70, nan, nan],
['王', '男', 1.8, 85, nan, nan],
['卢', '女', 1.62, 55, nan, nan],
['罗', '女', 1.58, 50, nan, nan],
['赵', '男', 1.82, 80, nan, nan],
['韩', '女', 1.67, 49, nan, nan]], dtype=object)

取值操作

其实我觉得这个不太会考,但是在学考卷有一题,所以还是得搞一下,毕竟那道题就用到了iloc 书上用到的是at,显示定位。
at显示定位一个
iat显示定位一个

loc显示切片
iloc隐式切片

In [121]:

df

Out[121]:

姓名 性别 身高 体重 bmi result
0 1.70 60 NaN NaN
1 1.75 70 NaN NaN
2 1.80 85 NaN NaN
3 1.62 55 NaN NaN
4 1.58 50 NaN NaN
5 1.82 80 NaN NaN
6 1.67 49 NaN NaN

In [122]:

df.at[0,'性别']

Out[122]:

'男'

In [124]:

print(df.loc[0,'性别'])
print(df.loc[0:3,'性别'])

0 男
1 男
2 男
3 女
Name: 性别, dtype: object

In [125]:

print(df.iloc[0,1])
print(df.iloc[0:3,1])


0 男
1 男
2 男
Name: 性别, dtype: object

你发现了啥?

显示切片操作的时候,结尾切得到,隐式切片操作的时候,结尾取不到!!

In [126]:

df[0:2]#默认使用隐式切片,当索引为0123

Out[126]:

姓名 性别 身高 体重 bmi result
0 1.70 60 NaN NaN
1 1.75 70 NaN NaN

In [127]:

df.set_index('姓名')['张':'王']

Out[127]:

| | 性别 | 身高 | 体重 | bmi | result |

姓名
1.70 60 NaN NaN
1.75 70 NaN NaN
1.80 85 NaN NaN

选择多列

In [128]:

df[['性别','姓名']]

Out[128]:

性别 姓名
0
1
2
3
4
5
6

关于axis

In [129]:

df[['身高','体重']]

Out[129]:

身高 体重
0 1.70 60
1 1.75 70
2 1.80 85
3 1.62 55
4 1.58 50
5 1.82 80
6 1.67 49

In [130]:

df[['身高','体重']].sum() #默认0,上下方向
Out[130]:

身高 11.94
体重 449.00
dtype: float64

In [131]:

df[['身高','体重']].sum(axis=1) #设置成1,左右方向

Out[131]:

0 61.70
1 71.75
2 86.80
3 56.62
4 51.58
5 81.82
6 50.67
dtype: float64

In [132]:

df.drop(0) #默认axis=0,上下方向所以是删行

Out[132]:

姓名 性别 身高 体重 bmi result
1 1.75 70 NaN NaN
2 1.80 85 NaN NaN
3 1.62 55 NaN NaN
4 1.58 50 NaN NaN
5 1.82 80 NaN NaN
6 1.67 49 NaN NaN

In [133]:

df.drop('姓名',axis=1) #axis=1,左右方向所以是删列

Out[133]:

性别 身高 体重 bmi result
0 1.70 60 NaN NaN
1 1.75 70 NaN NaN
2 1.80 85 NaN NaN
3 1.62 55 NaN NaN
4 1.58 50 NaN NaN
5 1.82 80 NaN NaN
6 1.67 49 NaN NaN

拼接操作

In [134]:

df1=df.copy()

In [136]:

df.append(df1)

Out[136]:

姓名 性别 身高 体重 bmi result
0 1.70 60 NaN NaN
1 1.75 70 NaN NaN
2 1.80 85 NaN NaN
3 1.62 55 NaN NaN
4 1.58 50 NaN NaN
5 1.82 80 NaN NaN
6 1.67 49 NaN NaN
0 1.70 60 NaN NaN
1 1.75 70 NaN NaN
2 1.80 85 NaN NaN
3 1.62 55 NaN NaN
4 1.58 50 NaN NaN
5 1.82 80 NaN NaN
6 1.67 49 NaN NaN

In [137]:

pd.concat([df,df1],ignore_index=True)

Out[137]:

姓名 性别 身高 体重 bmi result
0 1.70 60 NaN NaN
1 1.75 70 NaN NaN
2 1.80 85 NaN NaN
3 1.62 55 NaN NaN
4 1.58 50 NaN NaN
5 1.82 80 NaN NaN
6 1.67 49 NaN NaN
7 1.70 60 NaN NaN
8 1.75 70 NaN NaN
9 1.80 85 NaN NaN
10 1.62 55 NaN NaN
11 1.58 50 NaN NaN
12 1.82 80 NaN NaN
13 1.67 49 NaN NaN

计算

In [138]:

df['bmi']=df.体重/df.身高**2

In [139]:

df

Out[139]:

姓名 性别 身高 体重 bmi result
0 1.70 60 20.761246 NaN
1 1.75 70 22.857143 NaN
2 1.80 85 26.234568 NaN
3 1.62 55 20.957171 NaN
4 1.58 50 20.028842 NaN
5 1.82 80 24.151673 NaN
6 1.67 49 17.569651 NaN

分组

In [140]:

df.groupby('性别')

Out[140]:

<pandas.core.groupby.generic.DataFrameGroupBy object at 0x0000010DCD1D5080>

In [143]:

df.groupby('性别',as_index=False).mean()

Out[143]:

性别 身高 体重 bmi result
0 1.623333 51.333333 19.518555 NaN
1 1.767500 73.750000 23.501157 NaN
Last modification:June 2, 2022
如果觉得我的内容对你有用,请随意赞赏