Python处理数据【最基本操作】【读写xls文件-筛掉异常数据-相关分析操作】【入门】
为什么使用python处理数据?
Excel、spss都已经很强大了,为什么还要用python?
– 这是因为python可以较为快速地自定义处理量级更大的数据,而且免费!
【必读的说明】
-
环境python3
-
以下涉及的代码都是可以在代码编辑器中(我用的是Wing)中运行的,与在Jupyter中代码有区别的!
PART1 最简单的数据处理
代码作用:在代码中直接敲入数据,并呈现
代码示例
#在代码中直接敲入数据,并呈现
import pandas as pd
import numpy as np
raw_columns=['student_id','gender','name','score']#列索引
raw_data=[['001','male','jane','100'],['002','female','harry','90']]#数据
df=pd.DataFrame(data=raw_data,columns=raw_columns)
print(df)#如果是在Jupyter则不用print,直接输入df
呈现结果
PART2 xls读写(读入两个文件,最后输出一个)
首先导入所需要的包
代码示例
import pandas as pd
import numpy as np
step1:读入两个要处理的文件
代码示例
stu_info=pd.read_excel('./dataforpactice/dataforpactice/stu_info.xlsx')#相对路径(相对的是代码文件)
stu_result=pd.read_excel('./dataforpactice/dataforpactice/stu_results.xlsx')#相对路径
#注意运行到这pandas调用xlrd模块,可能会报错,需要命令行cmd中pip install xlrd 一下
#print(stu_info.head())#查看前5行
#print(stu_result.head())#查看前5行
#print(stu_info)#查看所有(虽然在wing里显示头和尾,中间用省略号)好奇效果的同学可以取消这里的注释,试一下效果
呈现结果:其中第二个的print的效果图(随便选了一个print)
step2:合并两个文件,生成数据集
代码示例
#df_stu=pd.merge(stu_info,stu_result,how='left',on=('stu_id','stu_id'))#数据放在不同文件,可以进行合并;类似于数据库join
df_stu=pd.merge(stu_info,stu_result,how='left',right_on='stu_id',left_on='stu_id')#连接键命名不同,要用right_on和left_on
step3:处理异常数据(就是去掉不想要的!!!)
3-1判断是否有缺失值/描述性统计(可选操作)
代码示例
print(df_stu.describe()) #描述统计,看对应列的正常数据数(可以先看一下是否有缺失的)
呈现结果
数据总数为599,可以看出在final_result一列的数据缺失
3-2 查看有缺失值的数据行(可选操作)
代码示例
#print(df_stu['final_result'].isna()==True) #False正常数据,True为缺失数据;这一行输出每一行数据的判断结果
print(df_stu[df_stu['final_result'].isna()==True]) #打印出异常数据行
呈现结果
可以对应看到15行和116行的final_resul 值缺失
###3-3去掉有缺失值的数据行
这一步操作也可以称作保留正常的数据行
代码示例
df_stu=df_stu[df_stu['final_result'].isna()==False]#删除异常值,保留正常值
print(df_stu.describe()) #可以再看一下改变
处理后结果
可以对应看到有缺失值的两行数据全被去掉->全为597了
3-3 保留部分值(可选操作,与上一步基本一致)
数据中有一行叫做state,state的值共有两种情况,一种是withdraw(辍学),另一种是pass(通过)
这里我只想保留“通过”状态的数据
代码示例
print(df_stu['state'].value_counts())#state 是数据里的一个列名,一共有两种值withdraw和path
#上一行代码可以查看最开始两种值各自的数量
df_stu=df_stu[df_stu['state']=='pass']#保留“通过”(即pass状态)的值
print(df_stu['state'].value_counts())#查看处理之后的结果
效果呈现:1-2:处理前-处理后
step4:输出/写入xls文件(处理后的数据)
代码示例
df_stu.to_excel("./test1.xls",encoding="utf-8")
#这里一定一定要注意文件格式,写成xlsx是不对的!
#PS:如果想输出csv格式的文件,to_excel对应换成to_csv,并且第一个参数中的xls要对应改成csv
效果呈现
在代码文件的目录下生成xls文件
小结&附件
这篇博客的重点在于xls文件的读写以及简单的数据处理(缺失值),博客的逻辑是以1个实例的操作为主线。因此相关函数对应的参数、功能使用并不全面,大家可以以此为基础向外拓展。
用到的两个xls文件见资源链接