安装
1
2
|
# pip安装
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
|
1
2
3
|
# 查看版本
import pandas as pd
pd.__version__
|
查看数据
数据地址:https://www.gairuo.com/file/data/dataset/team.xlsx

1
2
3
4
5
6
7
8
9
|
# 查看前5条,可以设置数字
df.head()
# 查看后5条,可以设置数字
df.tail()
# 随机查看5条
df.sample(5)
|
验证数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# 查看行数和列数
df.shape
# 查看索引、数据类型和内存信息
df.info()
# 查看数值型列的汇总统计
df.describe()
# 查看格字段类型
df.dtypes
# 显示数据行和列名
df.axes
# 列名
df.colums
|
建立索引
1
2
|
# 建立索引并生效
df.set_index('name',inplace=True)
|
数据选取
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# 选取指定的列
df[['a','b']]
df.loc[:,['a','b']]
# x代表行,y代笔列 df.loc[x,y]
# 指定索引选取
df[df.index=='Ack']
# 自然索引选择,类似列表的切片
## 取前3行
df[0:3]
## 在前10个中每2个取1个
df[0:10:2]
## 前10个选取
df.iloc[0:10,:]
# 指定行和列
## 只看Ben的四个季度的成绩
df.loc['Ben','Q1':'Q4']
## 指定行区间
df.loc['Eorge':'Alexander','team':'Q4']
# 条件选择
## 单一条件
### Q1列大于90
df[df.Q1>90]
### tema列为'C'的
df[df.team=='C']
## 组合条件
### and关系
df[(df.Q1>90) & (df.team=='C')]
### 多重筛选
df[df['team']=='C'].loc[df.Q1>90]
|
排序
1
2
3
4
5
6
|
# 按Q1列数据升序排列
df.sort_values(by='Q1')
# 降序排列
df.sort_values(by='Q1',ascending=False)
# team升序,Q1降序
df.sort_values(['team','Q1'],ascending=[True,False])
|
分组聚合
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 按照团队分组对应列相加
df.groupby('team').sum()
# 求平均
df.groupby('team').mean()
# 不同列不同计算方式
df.groupby('team').agg(
{
'Q1':sum, # 总和
'Q2':'count', # 总数
'Q3':'mean', # 平均
'Q4':'max' # 最大值
}
)
|
数据转换
1
2
3
|
# 数据表的转置
# A-Q1、E-Q4两点连成的折线为轴对数据翻转
df.groupby('team').sum().T
|

增加列
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# 增加一个固定值的列
df['one'] = 1
# 增加总成绩的列
df['total'] = df.Q1 + df.Q2 + df.Q3 + df.Q4
# 计算的值赋值与新列
df['total'] = df.loc[:,'Q1':'Q4'].apply(lambda x:sum(x),axis=1)
# 所有为数字的列相加
df['total'] = df.sum(axis=1)
# 增加平均成绩列
df['avg'] = df.total/4
|
统计分析
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# 返回所有列的均值
df.mean()
# 返回所有行的均值
df.mean(1)
# 返回列与列之间的相关系数
df.corr()
# 返回每一列中的非空值的个数
df.count()
# 返回每一列的最大值
df.max()
# 返回每一列的最小值
df.min()
# 返回每一列的中位数
df.median()
# 返回每一列的标准差
df.std()
# 方差
df.var()
# 众数
df.mode()
|
绘图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# 折线图
## Q1成绩的折线分布
df.['Q1'].plot()
## ben四个季度的成绩变化
df.loc['Ben','Q1':'Q4'].plot()
## 聚合后的总成绩折线图
df.groupby('team').sum().T.plot()
# 柱状图
## 柱状图
df.loc['Ben','Q1':'Q4'].plot.bar()
# 横向柱状图
df.loc['Ben','Q1':'Q4'].plot.barh()
# 饼图
## 各组人数对比
df.groupby('team').count().Q1.plot.pie()
|
导出
1
2
3
4
|
# 导出excel文件
df.to_excel('.xlsx')
# 导出csv文件
df.to_csv('.csv')
|
引用
内容摘自于书籍《深入浅出Pandas》