一、数据预处理部分
(一)使用到的库
- pandas
Python数据分析提供了高性能,且易于使用的数据结构,即 Series 和 DataFrame。Pandas 库基于 Python NumPy 库开发而来,可以与 Python 的科学计算库配合使用。Pandas 提供了两种数据结构,分别是 Series(一维数组结构)与 DataFrame(二维数组结构),这两种数据结构极大地增强的了 Pandas 的数据分析能力。 - numpy
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。 - matplotlib.pylab
PyLab模块可以在单个名称空间中批量导入matplotlib.pyplot(用于绘图)和NumPy(用于数学和使用数组) - seaborne
是一个基于matplotlib进行高级封装的可视化库,相比之下,绘制图表更为集成化、绘图风格具有更高的定制性。 - zipfile
可以处理使用ZIP64扩展名的ZIP文件(即大小超过4 GB的ZIP文件)。它支持在ZIP压缩文件中解密加密文件,但它目前不能创建加密文件。解密过程非常缓慢,因为它在本地Python而不是C中实现。 - Missingno
missingno库提供了一个灵活易用的可视化工具来观察数据缺失情况,是基于matplotlib的,接受pandas数据源。
(二)使用到的函数
- zipfile.ZipFile(file, mode)
创建一个ZipFile对象,表示一个zip文件。参数file表示文件的路径或类文件对象(file-like object);参数mode指示打开zip文件的模式, 默认值为’r’,表示读已经存在的zip文件,也可以为’w’或’a’,'w’表示新建一个zip文档或覆盖一个已经存在的zip文档。 'a’表示将数据附加到一个现存的zip文档中。参数compression表示在写zip文档时使用的压缩方法,它的值可以是zipfile. ZIP_STORED 或zipfile. ZIP_DEFLATED。如果要操作的zip文件大小超过2G,应该将allowZip64设置为True。 - Pandas DataFrame.head()
根据位置返回对象的前n行。如果你的对象中包含正确的数据类型, 则对于快速测试很有用。此方法用于返回数据帧或序列的前n行(默认值为5) - ndarray.shape
表示数组的维度,返回一个元组,这个元组的长度就是维度的数目,即 n dim 属性(秩)。比如,一个二维数组,其维度表示"行数"和"列数"。ndarray.shape 也可以用于调整数组大小。 - dropna()
删除包含空字段的行,可以使用 dropna() 方法,语法格式如下: DataFrame.dropna(axis=0, how=‘any’, thresh=None, subset=None, inplace=False) 参数说明:
参数名称 | 说明 |
---|
axis | 默认为 0,表示逢空值剔除整行,如果设置参数 axis=1 表示逢空值去掉整列。 | how | 默认为 ‘any’ 如果一行(或一列)里任何一个数据有出现 NA 就去掉整行,如果设置 how=‘all’ 一行(或列)都是 NA 才去掉这整行。 | thresh | 设置需要多少非空值的数据才可以保留下来的。 | subset | 设置想要检查的列。如果是多个列,可以使用列名的 list 作为参数。 | inplace | 如果设置 True,将计算得到的值直接覆盖之前的值并返回 None,修改的是源数据。 |
通过 isnull() 判断各个单元格是否为空。
- missingno.matrix()
Matrix是使用最多的函数,能快速直观地看到数据集的完整性情况,矩阵显示 - Dataframe.hist()
制作 DataFrame 列的直方图。直方图是数据分布的表示。此函数matplotlib.pyplot.hist()在 DataFrame 中的每个系列上调用,每列生成一个直方图。 - dataframe.unique()
求Series或dataframe中的不同值。unique()方法返回的是去重之后的不同值,而nunique()方法则直接放回不同值的个数。 - string.split()[]
通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list) 语法:str.split(str="",num=string.count(str))[n] 参数说明: str:表示为分隔符,默认为空格,但是不能为空(’’)。若字符串中没有分隔符,则把整个字符串作为列表的一个元素。例如:s.split(’’)是不合法的表达 num:表示分割次数。如果存在参数num,则仅分隔成 num+1 个子字符串,并且每一个子字符串可以赋给新的变量。[n]:表示选取第n个分片 - DataFrame.apply()
DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds) 该函数最有用的是第一个参数,这个参数是函数,相当于C/C++的函数指针。 这个函数需要自己实现,函数的传入参数根据axis来定,比如axis = 1,就会把一行数据作为Series的数据 结构传入给自己实现的函数中,我们在函数中实现对Series不同属性之间的计算,返回一个结果,则apply函数 会自动遍历每一行DataFrame的数据,最后将所有结果组合成一个Series数据结构并返回。 - sorted()
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。 list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作. - pandas.DataFrame.describe
pandas 是基于numpy构建的含有更高级数据结构和工具的数据分析包,提供了高效地操作大型数据集所需的工具。pandas有两个核心数据结构 Series和DataFrame,分别对应了一维的序列和二维的表结构。而describe()函数就是返回这两个核心数据结构的统计变量。其目的在于观察这一系列数据的范围、大小、波动趋势等等。 - DataFrame.plot()
DataFrame.plot(x=None, y=None, kind=‘line’, ax=None, subplots=False, sharex=None, sharey=False, layout=None,figsize=None, use_index=True, title=None, grid=None, legend=True, style=None, logx=False, logy=False, loglog=False, xticks=None, yticks=None, xlim=None, ylim=None, rot=None, xerr=None,secondary_y=False, sort_columns=False, **kwds)
参数名称 | 含义 |
---|
x | label or position, default None#指数据框列的标签或位置参数 | y | label or position, default None | kind | str,作图的类型 |
‘line’ : line plot (default)#折线图 ‘bar’ : vertical bar plot#条形图 ‘barh’: horizontal bar plot#横向条形图 ‘hist’ : histogram#柱状图 ‘box’ : boxplot#箱线图 ‘kde’ : Kernel Density Estimation plot#Kernel 的密度估计图,主要对柱状图添加Kernel概率密度线 ‘density’ : same as ‘kde’ ‘area’ : area plot ‘pie’ : pie plot#饼图 ‘scatter’ : scatter plot#散点图 需要传入columns方向的索引 ‘hexbin’ :hexbin plot
- dataframe.to_csv()
将一个二维表以csv格式保存在指定目录下
|