学校要求的做实验,参考老师发的代码。
- 实验目的
1. 了解和掌握透视表进行数据预处理方法
- 实验要求
使用python的pandas进行操作。
涉及知识包括:1.数据框的增删查改;
2.批量读取数据;
3.变量类型的转换;
4.数据框的重塑与合并;
5.生成数据透视表。
- 实验过程
- 导入数据:引入pandas等库对数据进行导入。
- 读取2004年的数据,并且查看前5行数据
- 查看文件末尾的数据:
- 第一列的值为NaN值,需要删掉第一列。
data0.drop("Unnamed: 0",axis=1,inplace=True)
- 并且把第1行的数据切片保存在col_name变量中,并且把这个变量赋值给data.colums实现更改列名。
col_name=data0.iloc[1]
data0.columns=col_name
- 把第0,1,最后一行数据给删掉。
data0.drop([0,1,len(data0)-1],axis=0,inplace=True)
- 在表中增加年份一列,以便把所有的年份的数据都连接在同一个表上。
- 定一个一个函数,用于对数据进行处理,例如去掉空值的第一列,第0行,第一行和倒数第一行,并且添加年份这个列。
def Preprogress(df,year):
df.drop("Unnamed: 0",axis=1,inplace=True)
df.drop([0,1,len(df)-1],axis=0,inplace=True)
df["年份"]=year
return(df)
- 通过os把by_year文件夹下所有的文件(除了2004年)保存在filename中。
- 定义一个函数,按照文件名对数据进行批处理读入并且去掉空值的行或列。
- 修改新表的列名。
- 把2004年的数据与other_data的数据连接起来,并且把表中NaN值的数据重新填充为0.
- 按照“地区”统计每个地方出现的个数及地区名字的表达情况。
- 由上图可以看出,地名并不规范,因此要把地名中间有空格获取缺少省字,市字的地名补全,以及把不属于地名的“建设兵团”从表中删除。
- 读取people.csv的数据:
- 显示people.csv尾部结构
- 把第二行的值赋值给表的列名,并且删除第0,1,2,n-1行。
- 把内蒙古自治区、广西自治区等地方改为表中规范的格式。
- 重新塑造people表的数据结构,列名为地区,年份,总人口数。
- 列出列的类型。
- 把发病率,死亡率,总人数,发病率,死亡率的值转为数值型。
- 导入Movies下的数据:
- 把三个表的数据通过merge函数合并在一起。
- 把rating中评分<250的电影过滤掉,并且按照title进行分组。
- 查看三个表的前5列的数据。
- 导入销售表格:
- 创建列为Name,值为Account,Price,Quantity的索引。
创建列为Mnager,Rep,值为Account,Price,Quantity的索引。
创建列为Manager,Rep,值为Price的索引。
创建名为Manager,Rep,值为价格的平均值和数量
把NaN值填充为0,并且创建列为Manager,Rep,Product的索引。
计算价格的总和并且以0填充空值,把quantity这列加进来。
查询经理名为Debra Henley的数据。
保留Status为won或pending的数据。
- 总结
本次实验用到了read_csv()读入本地的csv文件,使用re库对数据进行规范,使用lambda对数据批处理。使用函数的方法把具有重复动作的代码写在在一起,减少代码的重复。通过pd.pivot_table的方法创建索引把数据按照自定义的方式呈现在表中,通过query函数对数据进行过滤。