123567

1. 现有如下图所示的学生信息,请根据图中的信息完成以下操作

(1)根据年级信息为分组键,对学生信息进行分组,并输出大一学生信息。 (2)分别计算出四个年级中身高最高的同学。 (3)计算大一学生与大三学生的平均体重

2. 现有如下图所示的两组数据,其中 A 组中 B 列数据存在缺失值,并且该列数据为 int 类型,B 组中的 数据均为 str 类型。接下来,请对这些数据进行以下操作:

(1)使用 DataFrame 创建这两组数据。 (2)现在需要使用 B 组中的数据对 A 组中的缺失值进行填充并保持数据类型一致。 (3)将合并后 A 组中索引名为 key 的索引重命名为 D。

3. 中国已经成为了体育大国,从 2008 年的夏季奥运会到 2022 年的冬季奥运会,中国健儿拿下数百枚 奖牌,让国人扬眉吐气,向世界证明了中国的实力。当前,我国体育正处于从体育大国向体育强国迈进 的重要时期,奋斗依然是不变的主题。根据数据完成以下要求: (1)计算中国男篮、女篮运动员的平均身高与平均体重。 (2)统计中国篮球运动员的年龄分布情况。 (3)计算中国篮球运动员的体质指数。

4. 有一组关于北京和天津地区的统计信息,这些数据中都或多或少存在一些问题,比如重复的数据、缺失 的数据。请使用 Pandas 对爬取的数据进行预处理操作,具体包括: (1)检查重复数据,一旦发现有重复的数据,就需要将其进行删除。 (2)检查缺失值,为了保持数据的完整性,通常会使用某个数据填充 (3)检查异常值,一旦发现数据中存在异常值,通常先要对照原始数据进一步确认,如果是错误的数值,则 直接使用正确的数值进行替换即可。 (4)对北京和天津数据进行合并。

5. 给定一个餐饮订单数据文件(meal_order_detail.xlsx),该文件包含了订单的详细信息,如订单 ID、 菜品 ID、菜品名称、数量、金额等。请使用 Pandas 库完成以下任务: 1.读取 excel 文件中的数据到 DataFrame 中。 2.使用索引操作选择特定列的数据。 3.对 DataFrame 中的数据进行算术运算,如计算订单的总金额。 4.对 DataFrame 进行排序,如按照订单金额从高到低排序。 5.使用统计功能,计算各个菜品的销售总量和销售总金额。6.使用层次化索引,对菜品进行分类汇总。

1——————————————————————————————————

import pandas as pd

studnets_data = pd.DataFrame({'年级':['大一','大二','大三', '大四','大二','大三', '大一','大三','大四'], '姓名':['李宏卓','李思真','张振海', '赵鸿飞','白蓉','马腾飞', '张晓凡','金紫萱','金烨'], '年龄':[18,19,20,21, 19,20,18,20,21], '身高':[175,165,178,175, 160,180,167,170,185], '体重':[65,60,70,76,55, 70,52,53,73]})

studnets_data data = studnets_data.groupby('年级')

Freshman = dict([x for x in data])['大一']

print(Freshman)

#(2) 答案: data = data.apply(max) del data['年级'] print(data)

#(3) 答案: Junior = dict([x for x in data])['大三']

print(Freshman['体重'].apply('mean')) print(Junior['体重'].apply('mean'))

2——————————————————————————————————————

#(1)答案: import pandas as pd

import numpy as np

group_a = pd.DataFrame({'A': [2,3,5,2,3], 'B': ['5',np.nan,'2','3','6'], 'C': [8,7,50,8,2], 'key': [3,4,5,2,5]})

group_b = pd.DataFrame({'A': [3,3,3], 'B': [4,4,4], 'C': [5,5,5]})

print(group_a) print(group_b)

#(2)答案: group_a = group_a.combine_first(group_b) group_a

#(3)答案: group_a.rename(columns={'key':'D'})

3——————————————————————————————————————

3. import pandas as pd

# 读取运行员信息表.csv 文件中的内容

f1 = open('C:/Users/admin/Desktop/运动员信息表.csv')

df = pd.read_csv(f1) df

# 按项目一列进行分组

data_group = df.groupby('项目')

# 输出篮球分组的信息

df_basketball = dict([x for x in data_group])['篮球'] df_basketball

# 按性别一列进行分组,并使用方法

groupby_sex = df_basketball.groupby('性别')

groupby_sex.mean()

# 使用 transfrom 方法将数据进行聚合,并利用其特性将平均值进行广播

info = groupby_sex.transform('mean') info

# 查看男篮运动员的分组

baseketball_male = dict([x for x in groupby_sex])[' 男'] baseketball_male

# 求数据极差的函数

def range_data_group(arr): return arr.max() -arr.min()

# 求年龄、身高、体重这三列数据的极差值

baseketball_male.agg({'年龄(岁)':range_data_group, '身高(cm)':range_data_group, '体重(kg)':range_data_group})

# 添加“体质指数”列

df_basketball['体质指数'] = 0 df_basketball

# 定义计算 BMI 值的函数

def outer(num): def ath_bmi(sum_bmi):

weight = df_basketball['体重(kg)']

height = df_basketball['身高(cm)']

sum_bmi = weight / (height/100)**2

return num + sum_bmi

return ath_bmi all_bmi = df_basketball['体质指数'] df_basketball['体质指数'] = df_basketball[['体质指数']].apply(outer(all_bmi)) df_basketball

4——————————————————————————————————————————

import pandas as pd

# 读取北京地区信息

file_path_bj = open('C:/Users/admin/Desktop/北京地区信息.csv')

file_data_bjinfo = pd.read_csv(file_path_bj) file_data_bjinfo

# 读取天津地区信息

file_path_tj = open('C:/Users/admin/Desktop/天津地区信息.csv')

file_data_tjinfo = pd.read_csv(file_path_tj)

file_data_tjinfo

# 检测 file_data_bjinfo 中的数据,返回 True 的表示是重复数据

file_data_bjinfo.duplicated()

# 检测 file_data_tjinfo 中的数据,返回 True 的表示是重复数据

file_data_tjinfo.duplicated()

# 北京地区 删除重复数据

file_data_bjinfo = file_data_bjinfo.drop_duplicates() file_data_bjinfo file_data_tjinfo.isnull()

# 检测数据是否存在缺失数据

# 计算常住人口的平均数,设置为 float 类型并保留两位小数

population = float("{:.2f}".format(file_data_tjinfo['常住人口(万人)'].mean()))

# 以字典映射的形式将需要填充的数据进行对应

values={'常住人口(万人)':population} file_data_tjinfo = file_data_tjinfo.fillna(value=values) file_data_tjinfo

# 对北京地区信息进行异常值检测

import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei']

#用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False

#用来正常显示负号

file_data_bjinfo.boxplot(column=['行政面积(K ㎡)','户籍人口(万人)','男性','女性','GDP(亿元) ','常住人口(万人)'])

# 对天津地区信息进行异常值检测

file_data_tjinfo.boxplot(column=['行政面积(K ㎡)','户籍人口(万人)','男性','女性','GDP(亿元) ','常住人口(万人)'])

# 对两地信息数据进行合并

pd.concat([file_data_bjinfo,file_data_tjinfo],ignore_index=True)

5——————————————————————————————————————————

import pandas as pd

# 1. 读取 CSV 文件

df = pd.read_csv('orders.csv')

# 2. 索引操作选择特定列的数据(例如:选择 dishes_name 和 amounts 列) selected_columns_df = df[['dishes_name', 'amounts']] print("Selected Columns:") print(selected_columns_df.head())

# 打印选定的列的前几行

# 3. 算术运算(计算订单中每个菜品的总价)

df['total_price'] = df['amounts'] * df['counts']

print("\nArithmetic Operation - Total Price per Dish:")

print(df[['dishes_name', 'counts', 'amounts', 'total_price']].head())

# 打印菜品名、数量、单价 和总价的前几行

# 4. 排序(例如:按照订单的总价从高到低排序)

sorted_df = df.sort_values(by='total_price', ascending=False)

print("\nSorted DataFrame by Total Price:")

print(sorted_df[['dishes_name', 'total_price']].head())

# 打印按总价排序后的前几行

# 5. 统计(例如:计算各个菜品的销售总量和销售总金额)

sales_summary = df.groupby('dishes_name').agg({

'counts': 'sum',

 'amounts': 'sum',

'total_price') }).rename(columns='counts':'total_sold','amounts':'total_revenue_based_on_single_price'})

# 如果需要基于总价计算销售总金额,请使用下面的代码

# sales_summary = df.groupby('dishes_name').agg({ # 'counts': 'sum',

# 计算销售总量

# 'total_price': 'sum'

# 计算基于总价的销售总金额

# }).rename(columns={'counts': 'total_sold', 'total_price': 'total_revenue'}) print("\nSales Summary:") print(sales_summary.head())

# 打印销售统计的前几行

# 6. 层次化索引(例如:先按 parent_class_name 分类,再按 dishes_name 分类,计算销售总量和 销售总金额)

# 假设 parent_class_name 列存在于数据集中,并且我们希望根据这个分类进行分组 hierarchical_index_df = df.groupby(['parent_class_name', 'dishes_name']).agg({ 'counts': 'sum', 'amounts':'sum'}).rename(columns='counts':'total_sold','amounts':'total_revenue_based_on_single_price'})

# 如果需要基于总价计算层次化索引的销售总金额,请在 groupby 之后对'total_price'进行求和 print("\nHierarchical Indexing Sales Summary:")

print(hierarchical_index_df.head())

# 打印层次化索引销售统计

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值