轻松学Python数据分析3数据处理
阅读本文大约需要 3 分钟
摘 要
经过一周的洗礼,不要跟我提七夕,单身也很快乐,这只是一个平常的周末。上班、加班、休息的各位,让我们花2分钟时间给自己充充电,梳理下数据分析流程吧。数据分析包含数据采集->数据存储->数据处理->输出结果(如下图)。今天OF向大家介绍轻松学Python数据分析系列的第3部分:数据处理(开源数据集->数据存储csv/excel->数据清洗)。
主要内容:Excel 办公自动化和数据分析 适用人群:办公室职员 / Python 初学者 / 有志从事数据分析工作的人员 准备内容:Anaconda-Spyder,Pandas、numpy库
不会安装库的可以参考如下教程:
Anaconda如何安装Python库
一、开源数据集
在进行数据分析前,我们需要准备好目标数据,OF向大家推荐一个常用的免费数据源下载网站:Kaggle,先用邮箱注册,就可以免费下载了。
网站是全英文的,但是大家也不用担心,我们主要是搜索想要的数据进行下载,比如OF想下载电影相关的数据,在搜索栏搜索Douban Movie,我们下载一个小点的文件。
点击... - Download
二、数据读取csv
Kaggle上下载的文件格式csv居多,也有一些excel格式的。OF在第2部分已经讲解了如何读取excel文件,今天就讲解下读取csv文件。
知识点1 :读取路径,若读取的路径与python程序在一个文件夹下,直接写文件名即可,若不在一个文件夹下,需要写出完整路径(默认复制过来的是"",所以我们再地址前加个r)。 import pandas as pd ship = pd.read_csv(r"D:MechtouchPyprojectData_analysedataE_shipping.csv") print(ship)
知识点2 : to_string() 用于返回 DataFrame 类型的数据,如果不使用该函数,则输出结果为数据的前面 5 行和末尾 5 行,中间部分以 ... 代替 import pandas as pd ship = pd.read_csv(r"D:MechtouchPyprojectData_analysedataE_shipping.csv") print(ship.to_string())
知识点3 :to_csv() 用于将excel的文件内容(dataframe类型)转换成csv格式 import pandas as pd movie = pd.read_excel(r"D:MechtouchPyprojectData_analysedatadouban.xlsx") print(movie.to_csv())
三、数据清洗3.1 排序
在讲解数据清洗前,我们介绍一个常用的排序方法,用sort_values()函数对指定列排序。douban movie的excel数据如下图:
知识点4 :sort_values() 对数据进行排序后展示,如果想根据评分来降序排序,如下代码。
pandas 中 inplace 参数在很多函数中都会有,它的作用是:是否在原对象基础上进行修改
pandas中ascending是升序排序的意思,如果想要降序排序,ascending=False import pandas as pd movie = pd.read_excel(r"D:MechtouchPyprojectData_analysedatadouban.xlsx") movie.sort_values(("评分"),inplace=True, ascending=False) print(movie.head(10))3.2 缺失值统计
知识点5 :isnull().any() 判断哪些列的数据有空值,isnull()判断每个单元格的数据是否空值。 import pandas as pd movie = pd.read_excel(r"D:MechtouchPyprojectData_analysedatadouban.xlsx") print(movie.isnull().any())
结果: 序号 False 片名 False 评分 False 导演 False 主演 True 一句话点评 True dtype: bool
我们可以定位到"主演"和"一句话点评"这两个列中有空值。那么进一步查看两列空值个数,进行空值统计。
知识点6 :isnull().sum() 统计缺失值个数。 import pandas as pd movie = pd.read_excel(r"D:MechtouchPyprojectData_analysedatadouban.xlsx") print(movie["主演"].isnull().sum()) print(movie["一句话点评"].isnull().sum())
结果: 22 43.3 缺失值处理
处理缺失值可以分为两类:删除缺失值和缺失值插补。
而缺失值插补又分为以下几种:
1)使用固定值(将缺失值的属性用一个常量代替)
2)最近邻插补(在记录中找到与缺失值样本最接近的样本的该属性插补)
3)回归方法(对带有缺失值的变量,根据已有数据和与其有关的其他变量建立拟合模型来预测缺失值)
4)插值法(利用已知点建立合适的插值函数f(x),未知值由对应点xi求出来近似代替,如均值/中位数/众数插补) 3.3.1 删除缺失值
知识点7 :df.dropna() 删除含有任意缺失值的行, df.dropna(subset=["主演"], axis=0) 删除主演列中含有缺失值的行, axis=0表示删除行,axis=1表示删除列。import pandas as pd movie = pd.read_excel(r"D:MechtouchPyprojectData_analysedatadouban.xlsx") print(movie.dropna())
结果: 序号 片名 评分 导演 主演 一句话点评 0 1 肖申克的救赎 9.7 弗兰克·德拉邦特 蒂姆·罗宾斯 希望让人自由。 1 2 霸王别姬 9.6 陈凯歌 张国荣 风华绝代。 2 3 阿甘正传 9.5 罗伯特·泽米吉斯 汤姆·汉克斯 一部美国近现代史。 3 4 这个杀手不太冷 9.4 吕克·贝松 让·雷诺 怪蜀黍和小萝莉不得不说的故事。 4 5 美丽人生 9.5 罗伯托·贝尼尼 罗伯托·贝尼尼 最美的谎言。 .. ... ... ... ... ... ... 244 245 我爱你 9.0 秋昌民 宋在河 你要相信,这世上真的有爱存在,不管在什么年纪 245 246 黑鹰坠落 8.7 雷德利·斯科特 乔什·哈奈特 还原真实而残酷的战争。 247 248 四个春天 8.9 陆庆屹 陆运坤 来也匆匆去也匆匆,就这样风雨兼程。 248 249 发条橙 8.6 Stanley Malcolm 我完全康复了。 249 250 黑客帝国2:重装上阵 8.6 Andy 基努·里维斯 一个精彩的世界观正在缓缓建立。 [224 rows x 6 columns]3.3.2 插补缺失值
知识点8 :loc函数筛选满足条件的单元格,填充"主演"空值为"未知",一般数字的可能会取平均值、中位数等方式 import pandas as pd movie = pd.read_excel(r"D:MechtouchPyprojectData_analysedatadouban.xlsx") movie_null = movie["主演"].isnull() movie.loc[movie_null == True, "主演"] = "未知" print(movie.loc[movie["主演"]=="未知"])
结果:(只截取了部分) 序号 片名 评分 导演 主演 一句话点评 18 19 疯狂动物城 9.2 拜伦·霍华德 未知 迪士尼给我们营造的乌托邦就是这样,永远善良勇敢,永远出乎意料。 24 25 触不可及 9.2 奥利维·那卡什 未知 满满温情的高雅喜剧。 28 29 乱世佳人 9.3 维克多·弗莱明 未知 Tomorrow is another day. 29 30 寻梦环游记 9.1 李·昂克里奇 未知 死亡不是真的逝去,遗忘才是永恒的消亡。 35 36 飞屋环游记 9.0 彼特·道格特 未知 最后那些最无聊的事情,才是最值得怀念的。 51 52 狮子王 9.0 Roger 未知 动物版《哈姆雷特》。3.4 调整列
看着上面的结果,是不是觉得糟心,我只想看下片名、评分和主演,其他就不看了,那么我们就要学习dataframe的columns属性了。
知识点9 :dataframe(df, columns) import pandas as pd movie = pd.read_excel(r"D:MechtouchPyprojectData_analysedatadouban.xlsx") movie_null = movie["主演"].isnull() movie.loc[movie_null == True, "主演"] = "未知" df = movie.copy() columns = ["片名", "评分", "主演"] df = pd.DataFrame(df, columns=columns) print(df)
结果: 片名 评分 主演 0 肖申克的救赎 9.7 蒂姆·罗宾斯 1 霸王别姬 9.6 张国荣 2 阿甘正传 9.5 汤姆·汉克斯 3 这个杀手不太冷 9.4 让·雷诺 4 美丽人生 9.5 罗伯托·贝尼尼结 语
今天,OF简要介绍了数据处理的完整流程,在第4篇关于数据可视化的文章中我们将展现数据处理的成果。OF主要为大家介绍最完整、最简单、最实用的方法来学习办公自动化和数据分析,用Pandas对Excel的数据处理已经足够了。下几期的内容会更有实战性,尽情期待!
1、Pandas的数据结构,即基础原理(学习下会对后面的学习事半功倍)
轻松学Python数据分析1-最简单实用的Pandas讲解
2、数据读取和生成
轻松学Python数据分析2-Excel读取和生成
3、Pandas的数据处理(本篇文章)
4、Pandas的数据可视化图表
5、Pandas的项目实战 若有读者对选材和内容有任何建议,请随时评论或私信我,只要是好的建议,OF一定不会辜负大家,会有惊喜送上。 若学员对知识点有疑问或想学习更有用的知识,也请随时评论或私信我,请相信OF的诚意,一定会努力帮助大家发现-解决问题,提高自身的核心竞争力。
全核7。3GHz华硕ROGM13A连创10项世界纪录第11代英特尔酷睿处理器性能刚刚解禁,ROGMAXIMUSXIIIAPEX主板(以下简称ROGM13A)便凭借过硬实力,一举将最新11代酷睿处理器i911900KF超频至全核7。3
家中处处有WiFi6,华硕灵耀魔方Mesh路由体验本人家有华硕AX86U路由,但一直想体验下华硕的AIMesh,看看效果如何。本次分享下华硕灵耀魔方Mesh路由的体验心得。本文将从外观设置使用效果测试添加节点等方面全方位体验灵耀魔
Z590旗舰ROGM13EG和M13A重磅开售备受玩家期待的旗舰级Z590主板ROGMAXIMUSXIIIEXTREMEGLACIAL主板(以下简称ROGM13EG)和超频冠军ROGMAXIMUSXIIIAPEX(以下简称RO
苹果迎来芯时代这款WiFi6路由器更配哦AirTags来了它可以帮助你找到对应物品,还可以自定义上方的图案支持精确查找技术搭配U1芯片iPhone陀螺仪和距离传感器等等进行查找物品再也不怕物品找不到了但是高达3299元的
低调而实用的座驾汽车之家用车宝典如果你要选一台10万左右的电动车,现在市场上的可选车型还真不少,欧拉猫家三姐妹,哪吒三兄弟,比亚迪元Pro和比亚迪e2等等,还有就是一众微面然而如果把要求增加一个紧
2021款比亚迪宋经典,经济型SUV外观方面,2021款比亚迪宋经典版继续沿用了老款车型的设计风格。细节方面,其采用了比亚迪标志性的家族式设计语言,大尺寸进气格栅设计,搭配左右两侧狭长的大灯组,使得前脸造型非常个性。
比亚迪下半年全靠TA?全新车型海豚预售9。68万,值吗?体积小就一定要廉价?比亚迪的答案是大可不必比亚迪又叒出新车了!相比高产的王朝系,刚刚预售的全新车型海豚,得算是大家族里的晚辈。作为e平台3。0的开山之作,全新的LOGO和外观9。6
迪粉聊车听听比亚迪宋经典版车主怎么说8万喜提比亚迪宋经典版,开了1326公里,车主憋了几句话想说!为啥买这台车呢?那是因为家里面的路不好走,所以说我才考虑一台越野车,这个也是我的第一台车,我也没有打算买很好的。买这台
爱在七夕约惠有礼乐山纵锐迪比亚迪4S店七夕e2专场活动1000个爱你的理由,不如1次的行动乐山纵锐迪比亚迪4S店在e起更懂爱以爱的名义放价浪漫回馈,让爱加倍,精美好礼享不停!你想好怎么表白了吗?开启爱之旅七夕价到倾情约惠2021年8月
听说比亚迪宋PLUSDMi一车难求最近有一款15万以内的紧凑型SUV很火。它一车难求,订车需等数月才能提车,低价混动油耗低是它的优势,它就是比亚迪宋PLUSDMi从外观看宋PLUSDMi的进气格栅做得比燃油版更大,
千兆GigE图像采集卡我的创新,只为更好适配你机器视觉,就像机器设备的眼睛,不仅让机器能像人一样看到物体,而且机器视觉功能凭借高于人工检测的可靠性精准度和自动化程度,正迅速扩张到智能生活的各个角度。小到商品条形码的识别,大到无