dataframe 提取月数据_pandas数据分析入门

知识点概述

dataframe 提取月数据_pandas数据分析入门_第1张图片

dataframe 提取月数据_pandas数据分析入门_第2张图片

数据分析基础

一维数据结构

导入numpy、pandas

64e35fa853c8753e459826fec735ef0e.png
  • numpy

使用numpy定义一个一维数组

0acf1fd0d9a35c44eed31bc91c3bb577.png

查询元素

87addd18c605972ec2fee2778957c79c.png

array类型的数据可以使用类似列表的切片形式查看数据

a0ac62c9a31d0689dad37c253720f954.png

可以使用for循环来逐个查询元素

dataframe 提取月数据_pandas数据分析入门_第3张图片

通过dtype可以查看数组中元素的类型

d19676798c4b60b4fb3d0b13c8aa64ca.png

数组中的元素可以进行统计计算如平均值、标准差等

dataframe 提取月数据_pandas数据分析入门_第4张图片

数组中的元素是可以进行向量化的计算

dataframe 提取月数据_pandas数据分析入门_第5张图片
  • pandas

pandas中的一位数组结构是用Series来实现的

dataframe 提取月数据_pandas数据分析入门_第6张图片

获取数据的描述性统计信息

dataframe 提取月数据_pandas数据分析入门_第7张图片

查看Series中每个元素出现的次数

dataframe 提取月数据_pandas数据分析入门_第8张图片

获取Series中的元素,有两种方式

dataframe 提取月数据_pandas数据分析入门_第9张图片

Series的向量化计算

dataframe 提取月数据_pandas数据分析入门_第10张图片

图中的NaN为缺失值,因为s1和s2的索引不同,当进行向量相加时,只有索引相同的项可以相加,索引不同时,使用缺失值,也就是NaN代替。

对Series中的缺失值进行处理有两种方式,一种是直接删除;另一种是向量相加时,默认当索引不匹配时,使用0来代替缺失的数据。

直接删除缺失值。

dataframe 提取月数据_pandas数据分析入门_第11张图片

当dropna()的()中没有任何值时,不会替换原数据。

dataframe 提取月数据_pandas数据分析入门_第12张图片

当dropna(inplace=True)时,会替换原数据。

dataframe 提取月数据_pandas数据分析入门_第13张图片

使用函数在向量相加时,用0填充缺失的数据。

dataframe 提取月数据_pandas数据分析入门_第14张图片

二维数据结构

  • numpy

numpy中二维数据的获取与一维数据相似。

dataframe 提取月数据_pandas数据分析入门_第15张图片

numpy中的数轴,用axis=1表示横轴,用axis=0表示纵轴。

dataframe 提取月数据_pandas数据分析入门_第16张图片
  • pandas

pandas的二维数据结构是用DataFrame来实现的。

定义一个字典,并转化为DataFrame格式。

dataframe 提取月数据_pandas数据分析入门_第17张图片

得到如下形式的数据:

dataframe 提取月数据_pandas数据分析入门_第18张图片

字典是无序的,因此想要让输出的数据能够根据输入是的顺序显示,就需要用到排序字典。

dataframe 提取月数据_pandas数据分析入门_第19张图片

输出的DataFrame的数据顺序与输入时一致。

dataframe 提取月数据_pandas数据分析入门_第20张图片

DataFrame的计算功能。

计算平均值

dataframe 提取月数据_pandas数据分析入门_第21张图片

pandas中的数据获取:

pandas中获取数据的形式有两种:一种是通过数据的位置获取数据,使用iloc;

另一种是通过数据的索引获取数据,使用loc

通过数据的位置获取数据,使用iloc。

查询某个位置的数据,以查询第1行,第2列的数据为例

因为pandas中的数据索引是以0开始的,因此查询数据的方式如下:

dataframe 提取月数据_pandas数据分析入门_第22张图片

获取第一行的数据:

dataframe 提取月数据_pandas数据分析入门_第23张图片

获取第一列的数据:

dataframe 提取月数据_pandas数据分析入门_第24张图片

获取列的时候还有其他的方式,dataframe的数据可以用columns查看都有哪些行,这些行的名字会以列表的形式返回,因此可以利用这一点,获取某一列的数据:

dataframe 提取月数据_pandas数据分析入门_第25张图片

通过索引获取数据,使用loc。

查询元素:

dataframe 提取月数据_pandas数据分析入门_第26张图片

获取第一行:

dataframe 提取月数据_pandas数据分析入门_第27张图片

这里获取行的时候,可以简化代码:

dataframe 提取月数据_pandas数据分析入门_第28张图片

获取第一列:

dataframe 提取月数据_pandas数据分析入门_第29张图片

获取列的时候也有简单的方式:

dataframe 提取月数据_pandas数据分析入门_第30张图片

上面的方法都是获取单行获单列的数据,那么如何获取多行多列的数据?

使用列的名称获取数据:

dataframe 提取月数据_pandas数据分析入门_第31张图片

使用列的索引获取数据:

dataframe 提取月数据_pandas数据分析入门_第32张图片

使用切片的方式获取数据:

dataframe 提取月数据_pandas数据分析入门_第33张图片

注意:如果使用:,就不能将列名放在列表中。

dataframe 提取月数据_pandas数据分析入门_第34张图片

通过条件判断筛选:

dataframe 提取月数据_pandas数据分析入门_第35张图片

符合条件的数据会显示True,不符合的会显示False

将查询条件应用的dataframe中,可以快速筛选出符合条件的数据。

dataframe 提取月数据_pandas数据分析入门_第36张图片

数据分析步骤

提出问题

月均消费次数是多少?

月均消费金额是多少?

客单价是多少?

理解数据

使用pandas读取excel文件的数据:

cee40aa743edb7ea7f2d7c5eabe53cb6.png

查看数据,为了避免数据量大,并且能够快速查看数据的情况,通常使用head()来显示前5行的数据,head()默认显示前5行,也可以在()填写数字,来显示相应的行。

dataframe 提取月数据_pandas数据分析入门_第37张图片

查看数据的类型,明确每个字段:

dataframe 提取月数据_pandas数据分析入门_第38张图片

查看数据有多少行、多少列:

bca874bfce8ed13558fe7ca337c8414d.png

查看每一列的统计数:

dataframe 提取月数据_pandas数据分析入门_第39张图片

数据清洗

选择子集,有的时候因为数据集较大或者有的列是用不到的,此时为了计算方便,可以选择需要的数据进行研究:

dataframe 提取月数据_pandas数据分析入门_第40张图片

列重命名,有的时候列的名字是全英文的或者列名比较不容易理解时,可以将列重命名,方便阅读:

dataframe 提取月数据_pandas数据分析入门_第41张图片

这种情况修改后的列名是不会影响原数据的,

dataframe 提取月数据_pandas数据分析入门_第42张图片

如果想要在原数据的基础上修改,需要用到inplace参数:

dataframe 提取月数据_pandas数据分析入门_第43张图片

缺失值处理,处理数据的时候,经常会遇到缺失值的情况,pandas可以很方便的处理缺失的数据:

dataframe 提取月数据_pandas数据分析入门_第44张图片

其中any表示只要有空值就删除,how也可以使用all参数,当所有的值都是空值的时候才会删除。

数据类型转化,有的时候读取的数据类型并不是我们希望得到的数据类型,因此需要将原数据的类型转换成我们需要的数据类型。

查看数据类型:

dataframe 提取月数据_pandas数据分析入门_第45张图片

修改数据类型:

fa3450c3b2b98748e86cc813d217fdea.png

字符串分割,excel表格中的数据有的时候会出现带有-或者,或者空格等的数据,如‘2018-01-01 星期五’、‘11k-20k’等,为了计算方便,需要将这些字符分开,此时就需要用到字符串分割的操作。

首先我们来看下,字符串是如何被分割的。

dataframe 提取月数据_pandas数据分析入门_第46张图片

然后将这种方式运用到Series中的每一个数据上:

dataframe 提取月数据_pandas数据分析入门_第47张图片

获取销售时间列的数据,并将其作为参数传递到函数中,获取处理后的时间数据。

842c451b1ee952c6ebadc82cf88833f6.png

查看结果处理后的时间数据,前3行:

dataframe 提取月数据_pandas数据分析入门_第48张图片

将经过处理后的时间数据,复制给销售时间列,覆盖原来的数据。

dataframe 提取月数据_pandas数据分析入门_第49张图片

其实处理dataframe中的字符串分割问题有更简单的方式:

dataframe 提取月数据_pandas数据分析入门_第50张图片

使用这种方式获取的数据是dataframe类型的,其中expand参数表示当数据分割后的形状不规则时,用none来填充数据,我们将dateDf中的数据打印出来:

dataframe 提取月数据_pandas数据分析入门_第51张图片

接下来就可以根据dataframe中的提取数据的方式,将日期提取出来:

dataframe 提取月数据_pandas数据分析入门_第52张图片

前面我们提到过expand参数,如果不使用expand参数,获取的数据是什么样的呢?

dataframe 提取月数据_pandas数据分析入门_第53张图片

不使用expand时,我们获取的数据是一个Series,其中每一行都是一个列表,我们将Series转换成DataFrame格式获取日期数据:

71d3b6b7e8612d1c263bcc010a875f59.png

dataframe 提取月数据_pandas数据分析入门_第54张图片

接下来就是获取日期数据了,由于跟前面的方式一致,这里就不在重复操作了。

字符串格式转化为日期格式

dataframe 提取月数据_pandas数据分析入门_第55张图片

销售时间已经转变为datetime格式了。

其中format表示转换日期的时间,errors表示报错时的处理方式:

dataframe 提取月数据_pandas数据分析入门_第56张图片

查看数据:

dataframe 提取月数据_pandas数据分析入门_第57张图片

前面我们使用的是coerce的格式转换数据,因此当日期数据无效是显示NaT,我们需要将缺失的数据删除。

54701a27465808665dcd2b5bad080aa9.png

ebf948c8b9d8279d0ec7097589d78159.png

排序,为了使数据更方便被查看,我们需要将数据进行排序。

dataframe 提取月数据_pandas数据分析入门_第58张图片

其中ascending=True表示升序,ascending=False表示降序,默认是等于false,也就是降序。

排序之后,行的索引被打乱的顺序,因此,需要重新对行的索引设置。

dataframe 提取月数据_pandas数据分析入门_第59张图片

异常值处理

dataframe 提取月数据_pandas数据分析入门_第60张图片

对数据进行描述性统计时,发现销售数量,应收金额、实收金额等数据存在负值,这明显与实际情况不符,因此需要对这些值进行处理。

通过条件判断筛选中有效的值,并剔除异常值:

dataframe 提取月数据_pandas数据分析入门_第61张图片

计算指标

月均消费次数

删除重复值,数据中销售时间和社保卡号相同的值被视位重复值:

eab193bde5b2905d35e8875052ea389c.png

删除重复值后,数据的行数即为总的消费次数:

5b38fe7d6f448cd8c60c5cdc499fbdd8.png

总消费时间,现将数据按时间顺序升序排列,之后用最后的时间减去最开始的时间即为消费时间,然后除以30天即为总的月份数:

dataframe 提取月数据_pandas数据分析入门_第62张图片

月均消费次数:

094dac21f7837cee776e0907948243e5.png

月均消费金额

dataframe 提取月数据_pandas数据分析入门_第63张图片

客单价

根据社保卡号确定总的消费人数,首先删除社保卡中的重复值,删除后等到的数据的行数即为总的消费人数:

6d9db5604102244c749b39e33f5cea89.png

客单价:

dataframe 提取月数据_pandas数据分析入门_第64张图片

你可能感兴趣的:(dataframe,提取月数据)