学习目标:
掌握数据重构的方法
学习内容:
1、 数据合并
2、数据运算
3、数据聚合
学习产出:
1、掌握数据合并方法
# 导入库
import pandas as pd
import numpy as np
# 定义df1
df1 = pd.DataFrame({'姓名':['张三','李四','王五','小明','李华'],
'学号':[1001, 1002, 1003, 1004, 1005],
'成绩1':[89, 86, 56, 78, 92]})
# 定义df2
df2 = pd.DataFrame({'学号':[1002, 1003, 1004],'成绩2':[80, 92, 70]})
# 纵向连接表:concat方法
result = pd.concat([df1, df2], axis=1)
# 对行拼接分组
pd.concat([df1,df2], keys=['A','B'])
# 横向连接表:merge方法
## 一对一
result = pd.merge(df1, df2)
## 多对一
result = pd.merge(df1, df2, on='学号')
## 内连接
result = pd.merge(df1, df2, how='inner',on='学号')
## 外连接
result = pd.merge(df1, df2, how='outer',on='学号')
## 左连接
result = pd.merge(df1, df2, how='left',on='学号')
## 右连接
result = pd.merge(df1, df2, how='right',on='学号')
## 左右连接键(成绩1不包含成绩2)
result = pd.merge(df1, df2, left_on='成绩1', right_on="成绩2")
## 左右连接键(重复值)
result = pd.merge(df1, df2, left_index=True, right_index=True)
result
2、数据运算
算术运算(int类型)
加法 | 减法 | 除法 | 乘法 |
---|---|---|---|
df1.add(df2) | df1.sub(df2) | df1.div(df2) | df1.mul(df2) |
比较运算(>,<,>=,<=,==,!=)
例如:df1[‘学号’]>1003
汇总运算
平均值 | 方差 | 标准差 | 分位数 |
---|---|---|---|
df1.mean(df2) | df1.var(df2) | df1.std(df2) | df1.quantile(df2) |
计数 | 求和 | 最大值 | 最小值 |
df1.count(df2) | df1.sum(df2) | df1.max(df2) | df1.min(df2) |
中位数 | 众数 | ||
df1.median(df2) | df1.mode(df2) |
相关运算
a、相关性计算 —> 计算相关系数
b、比较性计算 —> 皮尔逊相关系数
例如::df1.corr(df2)
3、数据聚合
# 读取csv
df = pd.read_csv('result.csv')
# 计算泰坦尼克号男性与女性的平均票价
# 方法1
df['Fare'].groupby(df['Sex']).mean()
# 方法2
sex = df.groupby('Sex').count()['Fare']
fare = df.groupby('Sex').sum()['Fare']
median_fare = fare.div(sex)
# 方法3
df.groupby('Sex').agg({'Fare': 'mean'}).
rename(columns={'Fare': 'mean_fare'})