轻松学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:\Mechtouch\Pyproject\Data_analyse\data\E_shipping.csv')
print(ship)

知识点2to_string() 用于返回 DataFrame 类型的数据,如果不使用该函数,则输出结果为数据的前面 5 行和末尾 5 行,中间部分以 ... 代替

import pandas as pd
ship = pd.read_csv(r'D:\Mechtouch\Pyproject\Data_analyse\data\E_shipping.csv')
print(ship.to_string())

知识点3:to_csv() 用于将excel的文件内容(dataframe类型)转换成csv格式

import pandas as pd
movie = pd.read_excel(r'D:\Mechtouch\Pyproject\Data_analyse\data\douban.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:\Mechtouch\Pyproject\Data_analyse\data\douban.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:\Mechtouch\Pyproject\Data_analyse\data\douban.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:\Mechtouch\Pyproject\Data_analyse\data\douban.xlsx')
print(movie["主演"].isnull().sum())
print(movie["一句话点评"].isnull().sum())

结果:

22
4

3.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:\Mechtouch\Pyproject\Data_analyse\data\douban.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:\Mechtouch\Pyproject\Data_analyse\data\douban.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:\Mechtouch\Pyproject\Data_analyse\data\douban.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的诚意,一定会努力帮助大家发现-解决问题,提高自身的核心竞争力。

举报
评论 0