Pandas可以说是Python在数据分析应用最广最基础也是最重要的一个包,复盘一下日常比较常用的pandas用法。
数据导入
import pandas as pd
import numpy as np
df=pd.read_csv(invest_sample.csv)
类似的导入还有 pd.read_table 和 pd.read_txt 等,但是,pd.read_csv 最为常用。因为csv格式的文件比较干净,一般都是用转好格式的csv文件来处理数据。
数据观察
df.head()
WX20180203-224250@2x.png
默认是查看前5行,括号中也可以输入想要查看的行数。如df.head(10)
代表查看前10行。
这个时候一般检查是否有显示乱码和查看表头字段。
还有个df.tail()
,可以查看数据的后5行。
df.info()
WX20180203-224306@2x.png
主要查看每个字段的行数与字段类型,是否有缺失值,
可以打印出数据框的大小,代表11757行,7列。
df.shape
WX20180203-224321@2x.png
df.describe()
WX20180203-224331@2x.png
主要查看的每个字段(数值类型的字段)的描述统计,包括记数,平均值,方差,最小值,最大值和百分位数。
使用以上的pandas用法基本对要分析的数据有了一个大概了解。
数据认知
数据源是一份脱敏过的数据,字段包含 用户id,购买日期,购买金额,购买人用户属性等,是一份典型的电商购买数据。继续使用pandas包来进行更深入的认知和分析。
购买次数与金额最多的商品的,商品标记是2和3的次数和金额都是最多的。
df.groupby('expect').count()['amount']
WX20180203-224403@2x.png
df.groupby('expect').sum()['amount']
WX20180203-224352@2x.png
数据集范围内的金额
df.sum()['amount']
WX20180203-224419@2x.png
客单价即单笔订单的金额大小,可以反映用户的消费能力。
整体的客单价
df.mean()['amount']
WX20180203-224429@2x.png
不同省份的客单价,不同省份的的客单价相差比较大了。
这时候首先要确认的是 这种误差是不是由于部分省份购买人数的过少造成的波动(人数过少,个别大客户会大幅影响平均水平,使算数平均值这个指标衡量失真)
剔除异常情况后,客单价较高且人数较多的地区需要继续保持,客单价较高大是人数较少的地区需要拉进新用户,用户人数很多但是客单价不高的地区需要激励用户购买潜力。
df.groupby('province').mean()['amount']
WX20180203-224443@2x.png
不同产品的客单价,用户对不同产品的偏好程度
df.groupby('expect').mean()['amount']
WX20180203-224453@2x.png
不同性别的客单价,不同性别用户的单次消费能力,女性用户略高与男性用户。
df.groupby('gender').mean()['amount']
WX20180203-224503@2x.png
发现了不同性别客单价的差异,继续看下不同性别对平台的贡献能力。
金额贡献女性是男性的两倍。。。(跪了),人数勉强是两倍。
df.groupby('gender').sum()['amount']
WX20180203-224521@2x.png
df.groupby('gender').count()['amount']
WX20180203-224529@2x.png
为什么用pandas
以上用pandas进行了基本的数据观察和分析,由于数据取的比较规范,基本没有脏数,省了清洗这一步。
很多人觉得python也没比excel好到哪里去啊,以上实现的用excel也可以实现,操作也更加友好。
其实,不然。
以上只是 python在数据分析领域的小小冰山一角,python对数据的处理是异常灵活的。
只说一点,数据量十万量级的时候(日常的数据接触也是万级别起了),excel处理起来就比较费事了,稍微操作一下会卡半天。
后续的画图/灵活性处理/建模,才是python的拿手好戏。
我的tableau public:yangliang的tableau public主页
网友评论