python数据分析做什么作业好_Python数据分析pandas第一份工作20200902,第一次,作业...

练习1 利用pandas创建Excel表格

1.1 创建学生成绩表1

通过 Pandas 创建 学生成绩表的 excel 文件 。参考数据如下(可自己构建)

d8c610206aa22a97b16393a9e3c6f46f.png

#!/user/bin/env python

#-*-coding: utf-8-*-

#@Time : 2020/9/38:41

#@Author : GodSpeed

#@File : pandas第一次作业01_03.py.py

#@Software : PyCharm

import pandas as pd

import numpy as np

# 创建DataFrame

# pd.DataFrame(data=None,index=None,columns=None,dtype=None,copy=False)

# 以行的方式逐步增加

courses = ['语文', '数学', '英语', 'Python']

data1 = np.array([[87,74,98,84]])

data_style_c = pd.DataFrame(data1,index=["胡歌"],columns=courses)

#print(data_style_c)

#插入行loc

data_style_c.loc["林更新"] = [79,69,61,99]

print(data_style_c)

data_style_c.loc["金世佳"] = [84,84,94,66]

print(data_style_c)

##插入行append

data_jsj = pd.DataFrame(np.array([[90,60,72,90]]),index=["丑娟"],columns=courses)

print(data_jsj)

data_style_c = data_style_c.append(data_jsj)

print(data_style_c)

#插入列

stu_names = ["胡歌","林更新","金世佳","丑娟"]

sports_scores_dict = {

"体育":[np.nan,np.nan,np.nan,np.nan],

"马克思":[91,92,np.nan,88]

}

sports_scores = pd.DataFrame(sports_scores_dict,index=stu_names)

print(sports_scores)

# 列拼接,默认是并集

data_style_c = pd.concat([data_style_c,sports_scores],axis=1)

print(data_style_c)

#allow_duplicates: 是否允许列名重复,选择Ture表示允许新的列名与已存在的列名重复

data_style_c.insert(data_style_c.shape[1],"C++",[88,77,66,90],allow_duplicates=False)

print(data_style_c)

# 保存文件:

data_style_c.to_excel("学生成绩表.xlsx")

结果:学生成绩表.xlsx

c0233f16e954f1e0434174a78b447966.png

1.2 选修成绩表

import pandas as pd

import numpy as np

#利用dict创建DataFrame

ele_names = ["胡歌","林更新","金世佳","丑娟"]

ele_data_dict = {

"统计学":[85,np.nan,76,80],

"日语":[np.nan,69,95,np.nan]

}

df = pd.DataFrame(ele_data_dict,index=ele_names)

print(df)

# 保存文件:

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

结果:选修成绩表.xlsx

b0eec7c8377bbfe90d689be4c8f7d9d5.png

练习2

读取两表数据,注意:此时需指定行索引为第一列。

#!/user/bin/env python

#-*-coding: utf-8-*-

#@Time : 2020/9/38:49

#@Author : GodSpeed

#@File : pandas第一次作业02.py

#@Software : PyCharm

import numpy as np

import pandas as pd

'''

pd.read_excel(path, sheet_name=0, header=0, names=None, index_col=None,

usecols=None, squeeze=False,dtype=None, engine=None,

converters=None, true_values=None, false_values=None,

skiprows=None, nrows=None, na_values=None, parse_dates=False,

date_parser=None, thousands=None, comment=None, skipfooter=0,

convert_float=True, **kwds)

1.path --> xlsx的存储路径

2.sheet_name --> 读取工作表(sheet)名称 0表示第一个表

3.header --> 指定前几行作为列名(指定数据表的表头,默认值为0,即将第一行作为表头。)

4.names --> 自定义列名

5.index_col --> 用作索引的列

6.usecols --> 读取指定的列

8.skiprows --> 跳过特定行

9.nrows --> 读取指定行数

'''

df_file01 = pd.read_excel("学生成绩表.xlsx",sheet_name = 0, header=0,index_col=0 )

print(df_file01) #ImportError: Missing optional dependency 'xlrd'.

#解决方法

#安装xlrd

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

'''

语文 数学 英语 Python 体育 马克思 C++

胡歌 87 74 98 84 NaN 91.0 88

林更新 79 69 61 99 NaN 92.0 77

金世佳 84 84 94 66 NaN NaN 66

丑娟 90 60 72 90 NaN 88.0 90

'''

df_file02 = pd.read_excel("选修成绩表.xlsx", sheet_name = 0,header=0,index_col=0)

print(df_file02)

'''

统计学 日语

胡歌 85.0 NaN

林更新 NaN 69.0

金世佳 76.0 95.0

丑娟 80.0 NaN

'''

df_file01 = pd.concat([df_file01,df_file02],join='inner',axis=1)

print(df_file01)

'''

语文 数学 英语 Python 体育 马克思 C++ 统计学 日语

胡歌 87 74 98 84 NaN 91.0 88 85.0 NaN

林更新 79 69 61 99 NaN 92.0 77 NaN 69.0

金世佳 84 84 94 66 NaN NaN 66 76.0 95.0

丑娟 90 60 72 90 NaN 88.0 90 80.0 NaN

'''

练习3

• 因为体育课全被数学老师抢了,所以学生成绩表中的体育期末成绩全为空,将其删除。

• 学生成绩表.xlsx 中没有选修的数据,将 选修成绩表.xlsx 的数据添加到 学生成绩表 中。

• 可以观察出来,此时的数据每个人都是五门课程,现在需添加一列 总成绩 来求得每位学生的总成绩。(pandas中有df.sum(axis=1)来进行求每行的数据之和,并且gnan跳过。)

最终的数据如下:

56022c1d60d71b4c6cb88e1bebf63606.png

再将该数据保存到 总表.xlsx 中

f9266a11956e71b904d22dbc6781e140.png

3.1 因为体育课全被数学老师抢了,所以学生成绩表中的体育期末成绩全为空,将其删除。

df_file01 = pd.read_excel("学生成绩表.xlsx",sheet_name = 0, header=0,index_col=0 )

print(df_file01) #ImportError: Missing optional

'''

语文 数学 英语 Python 体育 马克思 C++

胡歌 87 74 98 84 NaN 91.0 88

林更新 79 69 61 99 NaN 92.0 77

金世佳 84 84 94 66 NaN NaN 66

丑娟 90 60 72 90 NaN 88.0 90

'''

del df_file01["体育"]

print(df_file01)

'''

语文 数学 英语 Python 体育 马克思 C++

胡歌 87 74 98 84 NaN 91.0 88

林更新 79 69 61 99 NaN 92.0 77

金世佳 84 84 94 66 NaN NaN 66

丑娟 90 60 72 90 NaN 88.0 90

'''

courses02 = ['姓名','统计学', '日语']

df_file02 = pd.read_excel("选修成绩表.xlsx", sheet_name = 0,index_col=0 )

print(df_file02)

'''

姓名 统计学 日语

胡歌 85.0 NaN

林更新 NaN 69.0

金世佳 76.0 95.0

'''

3.2 学生成绩表.xlsx 中没有选修的数据,将选修成绩表.xlsx 的数据添加到学生成绩表中

# 列拼接,默认是并集

df_file01 = pd.concat([df_file01,df_file02],axis=1)

print(df_file01)

'''

语文 数学 英语 Python 马克思 C++ 统计学 日语

胡歌 87 74 98 84 91.0 88 85.0 NaN

林更新 79 69 61 99 92.0 77 NaN 69.0

金世佳 84 84 94 66 NaN 66 76.0 95.0

丑娟 90 60 72 90 88.0 90 80.0 NaN

'''

3.3 可以观察出来,此时的数据每个人都是十门课程,现在需添加一列 总成绩 来求得每位学生的总成绩。(pandas中有df.sum(axis=1)来进行求每行的数据之和,并且gnan跳过。)

# 现在需添加一列 总成绩 来求得每位学生的总成绩。(pandas中有df.sum(axis=1)来进行求每行的数据之和,并且gnan跳过。)

df_sum = df_file01.sum(axis=1)

print(type(df_sum)) #

'''

胡歌 607.0

林更新 546.0

金世佳 565.0

丑娟 570.0

'''

print(df_sum.index) #Index(['胡歌', '林更新', '金世佳', '丑娟'], dtype='object')

print(df_sum.values) # df_sum.values

# 把Series转换为DataFrame

#df_sum_fr = pd.DataFrame(df_sum.values,index=list(df_sum.index),columns=["总成绩"])

#print(df_sum_fr)

# 合并为总表

df_file01.insert(df_file01.shape[1],"总成绩",df_sum.values,allow_duplicates=False)

print(df_file01)

'''

语文 数学 英语 Python 马克思 C++ 统计学 日语 总成绩

胡歌 87 74 98 84 91.0 88 85.0 NaN 607.0

林更新 79 69 61 99 92.0 77 NaN 69.0 546.0

金世佳 84 84 94 66 NaN 66 76.0 95.0 565.0

丑娟 90 60 72 90 88.0 90 80.0 NaN 570.0

'''

df_file01.to_excel('总表.xlsx')

39f18330aed87886be854cfaf809685a.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值