动手学数据分析 Task03

学习目标:

掌握数据重构的方法

学习内容:

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'})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值