python练习之pandas的使用

1. 请先用字典数据生成一个 DataFrame 对象 df,数据为:{'Name': ['Kate',

'Rose', 'Tom', 'John'], 'Height': [155, 165, 170, 168], 'Weight': [45,

50, 65, 62]}。完成如下数据的编辑:(1)用两种方法,分别往 df 中加入性别列 'gender'和年龄列'age'(数据可自定义);(2)往 df 中加入一行数据,数据为:

{'Name':'Lucky','Height':165,'Age':17, 'Weight':48,'Gender':'Female'}。

import pandas as pd

# 问题1
df = pd.DataFrame({'Name': ['Kate', 'Rose', 'Tom', 'John'], 'Height': [155, 165, 170, 168], 'Weight': [45, 50, 65, 62]})

# (1)加入性别列'gender'和年龄列'age'
df['gender'] = ['Female', 'Female', 'Male', 'Male']  # 方法1
df.insert(3, 'age', [25, 26, 27, 28])  # 方法2

# (2)加入一行数据
df = df.append({'Name':'Lucky','Height':165,'age':17, 'Weight':48,'gender':'Female'}, ignore_index=True)

print(df)

2. 请先用字典数据生成一个 DataFrame 对象,数据为:{'城市':['北京','上海 ',' 天 津 ',' 深 圳 '], ' 邮 编 ':['010','021','022','073'], ' 气 温 ':[18,22,19,30]},为其加上行索引'c1','c2','c3','c4'。完成如下数据的选 取:(1) 输出“气温”列;(2)用两种方法输出“上海”这一行的数据;(3) 输出“深圳”的邮编;(4) 输出所有“气温”大于 20 度的城市的“城市名”和 “邮编”。

import pandas as pd

# 创建 DataFrame 对象
df = pd.DataFrame({'城市':['北京','上海','天津','深圳'], '邮编':['010','021','022','073'], '气温':[18,22,19,30]}, index=['c1','c2','c3','c4'])

# (1) 输出“气温”列
print(df['气温'])

# (2)用两种方法输出“上海”这一行的数据
print(df.loc['c2'])  # 方法1
print(df[df['城市'] == '上海'])  # 方法2

# (3)输出“深圳”的邮编
print(df[df['城市'] == '深圳']['邮编'])

# (4)输出所有“气温”大于 20 度的城市的“城市名”和“邮编”
print(df[df['气温'] > 20][['城市', '邮编']])

3. 读取“simple_score.xlsx”文件,首先过滤其中的异常成绩数据(小于 0、 大于 100 或为空的是异常数据),然后统计“成绩”字段的描述性信息,除了默认的均值、方差等以外,还需统计“总和”、“极差”、“变异系数”、“四分位数间距 ” ,并输出以上统计信息,输出结果如下图所示。

import pandas as pd
import numpy as np

# 读取文件

df = pd.read_excel('作业数据集-simple_score.xlsx')


# 过滤异常数据

df = df[(df['成绩'] >= 0) & (df['成绩'] <= 100)].dropna()

# 计算描述性信息
desc = df['成绩'].describe()

# 计算总和
total = df['成绩'].sum()

# 计算极差
range_ = df['成绩'].max() - df['成绩'].min()

# 计算变异系数
cv = df['成绩'].std() / df['成绩'].mean()

# 计算四分位数间距
iqr = df['成绩'].quantile(0.75) - df['成绩'].quantile(0.25)

# 输出统计信息

print("总和: ", total)
print("极差: ", range_)
print("变异系数: ", cv)
print("四分位数间距: ", iqr)
print(desc)

4. 读取“scores.xlsx”文件中 sheet_name=0 的数据,包括学生学号、姓名、

性别、及三门课程的考试成绩。输出以下内容:文件数据总行数,三门课程按性

别分组后的平均分;增加一列“总分”,记录每个同学三门课程分数的总和,并

输出按总分降序排列结果中的前 5 行数据,输出结果如下图所示。

import pandas as pd

df = pd.read_excel('作业数据集-scores.xlsx', sheet_name='第一学期')

total_rows = len(df)

average_scores_by_gender = df.groupby('性别')[['Web编程', '计算机导论', '数据库原理']].mean()

df['总分'] = df[['Web编程', '计算机导论', '数据库原理']].sum(axis=1)


top_5_students = df.sort_values(by='总分', ascending=False).head(5)


columns = ['学号'] + [col for col in top_5_students.columns if col != '学号']
top_5_students = top_5_students[columns]


top_5_students.reset_index(drop=True, inplace=True)

# 输出结果
print(f"一行共有: {total_rows}行数据")
print(average_scores_by_gender)
print("按总分降序排列输出前5行结果:")
print(top_5_students)

 

如遇运行错误,有的是因为没有将对应文件放到对应路径下,xsl文件和py文件需要在同意路径下,截图如下:

相关xsl内容截图如下:

遇到系统插件未安装系列报错问题注意一下安装方法:

在编译器里面相关的安装命令:

pip install numpy
pip install pandas
pip install openpyxl

如果上面的命令下载太慢,有时会出现网络中断引起的报错

可以试用以下命令(XXX)替换需要安装的东西即可

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple xxx

另外也可以在cmd命令行输入以上命令安装! 

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值