pandas nat_数据处理-Pandas&Numpy大法

8c4eb08fd9a4b74a56682cbb39350c54.png

知识点概括

831680a45e3e889157a8ab0fa9555edd.png

一、一维数据分析

  • Pandas包:一维数据用Series表示,建立在Numpy的基础上,并且使用的功能更多
  • Numpy包:一维数据用Array表示,和列表类似

1. Numpy一维数据结构array

5c3a3ffd21a86e97f7e77922be7d5123.png

Numpy的 array和列表(List)的区别:

  • 一维数组有统计功能(e.g.平均值等)
  • 可以向量化计算
  • 一维数组中的元素必须是同一种数据类型,列表可以是不同数据类型
  • 可以通过.min()/.max()/.mean()/.std()获取描述性统计信息

d406d9975d43cfc575bb234d7395dfe6.png

2. Pandas的一维数据结构Series

与numpy的array区别:pandas有指定索引

  • 用descibe显示描述统计信息
  • 用iloc属性用于根据位置获取值
  • 用loc属性根据索引获取值

59abbb8b1c330d7ca1606446a857c98d.png

72448b95b39c81fda234703ceecac7ac.png
  • 支持向量运算

15b4e73a3175694bac16fbc3f1aeef1a.png

pd.Series删除空缺值

  • 法1:用dropna,删除空集,类似于去两个一维数组的交集
  • 法2:用fill_value,合并两个集合中不能匹配的部分,类似于取并集

e878aca9b94324642e035e45778fe365.png

二、二维数据结构

既有行又有列,类似于excel中的二维表格

  • numpy中用array创建二维数组
  • pandas中用dataframe创建数组

1. Numpy的array

numpy的array中,每一个列表代表一行,将整个数组用中括号括起来

a705d5e0a0d680bf078faa7e46af8c2a.png

查询元素

  • 查询某个元素:a[0:2]表示查询第一行第三列,二维数组中行列都是从0开始索引的
  • 查询某行所有数据:a[0:]表示获取第一行所以数据
  • 查询某列所有数据:a[:2]表示查询第三列的所有数据

4af61dcabe406e1171ead5b4f6dabc6f.png

计算平均值

  • axis=1表示计算每一行的平均值;
  • axis=0表示计算每一列的平均值;
  • 如果没有指定,则计算整个数组的平均值;

4be43746a9fc46e6bc97c75692f29c52.png

2. Pandas数据框(Dataframe)

Pandas数据框(Dataframe)的优点:有索引值;每一列可以是不同类型的数据;

创建数据框的步骤:

  • 第一步:创建字典(用{})
  • 第二步:将创建的字典导入pd.DataFrame()中

6f5b2fe717f69995b82ff580820f8354.png

有序的数据框:需要引入collections

cd2a596db983295c7e9119f3d15211f2.png

平均值计算

用.mean是求每一列的平均值,前提是整数/浮点型

82c2788776d82cb1a6256a83d7976470.png

查询

方法1:根据位置索引用iloc(逗号将行和列的范围分开)

356d5bf9fe3066e22ea0ed8900f866c1.png

方法2:根据索引查询数据用loc,行:只能用数字/冒号,列:只能用列名索引/冒号

34b670a89f0b6d05990a2add2de0747a.png

查询某几列:不需要loc属性,需要在元素范围加上中括号

e2ff063029f36f5340cc21864cb3f815.png

切片功能:指定范围

74d6200313969f30005eb22d25f7734b.png

通过条件判断筛选

  • 构建条件查询
  • 应用查询条件

4cf369aa1509fa6da15d1c7a09a38553.png

多条件查询

9724227a9423b01f33289e8dd4bd3309.png

数据集描述统计信息

76d0cc2514041783d84cf437b362a764.png

三、数据分析的步骤

  • 提出问题
  • 理解数据
  • 数据清洗
  • 构建模型
  • 数据可视化

1. 提出问题

  • 明确数据来源
  • 明确指标的含义/计算公式

2. 理解数据

  • 读取EXCEL数据,
  • 打印前几行: 了解信息,知道表格的特点。

77a8d9fefc1ae1bde8ed006a51ec6a48.png

e1bc8f16f6fc0899d9d637325dc5e8fe.png

从销售数量描述统计信息中发现:

  • 最小值出现负数,为异常值;
  • 平均数为2.386194,中位数为2,上四分位数为2,下四分位数为1,最大值为50为异常值;

b3bef63da06f480b152bc47fd0f1e062.png

从应收金额和实收金额描述统计信息中发现:

  • 最小值为负数,为异常值;
  • 卖出商品数量一致,两者的平均值有出入,应收金额平均值比实收金额平均值大;
  • 两者的平均值都比各自的中位数大,说明在卖出的6577个商品中,价格高的商品比例较高;

3. 数据清洗

  • 选择子集
  • 列名重命名
  • 缺失数据处理
  • 数据类型转换
  • 数据排序
  • 异常值处理

选择子集

比如用切片功能选择指定的范围

dfe87b0efc871a9f2e1f2a7dcfbe46a2.png

列名重命名

  • 可以用.rename将列名重新命名:salesDf.rename(columns=newcolumns,inplace=True/False)
  • 当inplace为True原始的数据框会变动,如果为False表示原始的数据框不会变动,会创建出新的数据框;

f86d100f76f75580ced2ad693685a67e.png

缺失数据处理

处理缺失值的方法:

  • 建立模型填补缺失值
  • 直接删除缺失值:可以用.dropna(subset=[].how='any),其中subset是用于存放指定列的列表,how='any'表示如何删除空缺值,any表示在给定任何一列中有缺失值就删除

af35a0985d5d36d5a2eccded778a404e.png

数据类型转换

用.astype('数据类型')

6231a5a3b92f300306b06686d3aa9af4.png

处理日期/时间

  • 用.split将字符串类型的时间和日期分割
  • 输入:coltime是Series数据类型
  • 输出:分割后的时间,返回也是个Series数据类型

f62fe2d049b883e4acec1a23e4d5be6c.png

字符串转日期格式

  • 用to_datetime[定位列,format=日期形式,errors='coerce]
  • format表示原始数据中日期的格式
  • 原始数据中如果不符合日期格式,转换后的值为NaT

e5092acb9a33f0a7cb57529edc3eea23.png

排序

  • 用sort_values()
  • by表示按哪一列进行排序
  • ascending=True表示升序
  • ascending=False表示降序

8b387913b5c5351caeac68a4ff818cbc.png

排序后行号依旧是原行号,因此可以重命名行名

9d796a01be4ba2076eadd2c879e6a954.png

bbfa281be5dc30a2119dc657c6b465e0.png

四、案例

1. 业务指标

月均消费次数,即总消费次数/月份数,同一天内同一个人发生的所有消费算做一次消费

计算总消费次数:

5781740b85031c3a3fd36765833760e2.png

月均消费金额,即为总消费金额/月份数

3eb34f8c577cb3bcedee16587114b46d.png

客单价:每一位顾客消费的金额

5912567deebcfc3ac311a23da068c826.png
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值