pandas 数据分类聚合作业

本文展示了如何通过Python操作将学生成绩表与选修成绩表水平拼接,合并过程包括读取Excel、数据清洗与合并,并针对教师信息需求进行数据整合。此外,还演示了如何利用pandas处理大量CSV数据,提取中国省份的星巴克分布统计。
import pandas as pd
import numpy as np
'''
将 学生成绩表 与 选修成绩表 进行水平的拼接
'''
#构建学生成绩表
stu_names = ["胡歌","林更新","金世佳","丑娟"]
courses = ['语文', '数学', '英语', 'Python', '体育']
data = np.array([[87., 74., 98., 84., np.nan],[79., 69., 61., 99., np.nan],[84., 84., 94., 66., np.nan],[90., 60., 72., 90., np.nan]])
#构造pd.Dataframe数据类型
df=pd.DataFrame(data,index=stu_names,columns=courses)
df

#把数据写入excel表
df.to_excel("学生成绩表.xlsx")

#构建选修成绩表
ele_names = ["胡歌","林更新","金世佳","丑娟"]
ele_courses = ['统计学', '日语']
ele_data = np.array([[85., np.nan],[np.nan, 69.],[np.nan, 95.],[80., np.nan]])
df_ele = pd.DataFrame(ele_data,index=ele_names,columns=ele_courses)
df_ele

#表二写入excel文件

df_ele.to_excel("选修成绩表.xlsx")

#分别读取两个excel表数据进行合并
data1 = pd.read_excel(r"学生成绩表.xlsx")
# data1

data2 = pd.read_excel(r"选修成绩表.xlsx")
# data2

#数据进行合并
data_total = data1.merge(data2,how='inner')
data_total.set_index("Unnamed: 0")

作业二

# 需求:想在一张表中直观的了解每一位同学对应的老师
# 读取学生表

data_stu= pd.read_excel("学生分配表.xlsx")
data_stu

# 读取老师表
data_teacher=pd.read_excel("老师排班表.xlsx")
data_teacher

# 合并两个表 采用merge方法
d2 = data_stu.merge(data_teacher,how="inner",left_on="班级",right_on="班级",sort=True)
d2

这里采用了sort排序,但是没搞清楚对谁进行了sort排序。。。,课后在试试看!

练习三

# 通过starbucks_store_worldwide.csv数据,获取中国每个省份的分布数量
# 表的数据很多,首先先看一下csv的编码,在记事本里看了一下,utf——8 ,解决乱码问题
# 列数太多,取有用的列usecols, 发现中国的英语是CN 过滤含有CN的国家

data_star=pd.read_csv(r"starbucks_store_worldwide.csv",encoding="utf_8",usecols=["City","State/Province","Country"])
d_cn = data_star[data_star['Country'].str.contains("CN")]

d_cn

发现城市显示还是很靠谱,但省的显示是用数字表示的,所以对省这里进行分组

g1 = d_cn.groupby(by="State/Province")
# 打印一下group对象
for g in g1:
    print(g)

#可以用describe(),能够显示详细的显示个分组的描述,但要求是对省的分布情况进行统计
#g = g1.describe()
#type(g)

# 所以使用count()进行统计
g1.count()

题目做到最后要是能有省的数字代码和这个表进行merge会显示的更好。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值