栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

利用pandas进行数据分析

利用pandas进行数据分析

1.系统环境:
Windows10: 20H2
MySQL:8.0.23
3.项目背景
(1)
如今的处在一个数据爆炸性增长的大数据时代,自阿里提出“数据赋能”以来,越来越多的电商企业和运营开始关注数据的应用。日常业务产生的海量数据蕴含着巨大的价值,如何在现在竞争激烈的环境中生存下来,其中最重要的一个因素就是数据化运营。
在这样的背景下,我将基于pandas进行数据分析,探索用户行为规律,从而提供有价值的信息。
(2)
也称皮尔森积矩相关系数,一般用于分析,两个连续变量之间的关系,是一种线性相关系数,公式为:

补充:
|r|<= 0.3 不存在线性相关
0.3<=|r|<= 0.5 低度线性关系
0.5<=|r|<= 0.8 显著线性关系
|r| > 0.8 高度当业务指标繁杂,叙述笼统,给报告制作,分析解读带来巨大的成本的时候。根据相关系数删减指标是方法之一,一般来说相关性大于0.8的时候可以选择其一。
在建立多元回归模型前,需要解决把那些数据放入模型作为自变量。最常规的方式就是先计算所有字段与因变量的相关系数,把相关系数较高的放入模型。然后计算自变量间的相关系数。若自变量间的相关系数高,说明存在多重共线性,需要进行删减。
决策层或者管理层经常会根据自己的经验,主观地形成一些逻辑关系。最典型的表述方式就是“我认为这个数据会影响到那个数据”。到底有没有影响?可以通过计算相关系数来判断。相关系数的应用能够让决策者更冷静,更少地盲目拍脑袋。虽然相关系数不能表达因果关系,但有联系的两件事情,一定会在相关系数上有所反映。

3.用户行为日志avocado.csv,日志中的字段定义如下:
Date | 日期
AveragePrice | 平均价格
Total Volume | 总交易量
4046 | 售出 PLU 4046 的鳄梨总数
4225 | 售出 PLU 4225 的鳄梨总数
4770 | 售出 PLU 4770 的鳄梨总数
Total Bags |总袋数
Small Bags | 小包
Large Bags | 大包
XLarge Bags | 特大包
Type | 是否有机
Year | 哪一年
Region | 地区

4.明确问题
本文将对牛油果售出数据,进行数据分析,尝试分析出有价值的信息。

5.数据来源
数据来自Kaggle社区
网址:https://www.kaggle.com/neuromusic/avocado-prices

6.数据分析
首先导入数据,并查看数据的统计信息:

import pandas as pd
df = pd.read_csv("D:/迅雷下载/archive/avocado.csv")
pd.set_option('display.max_columns', None)
df['AveragePrice'].mean()
df['AveragePrice'].median()
df['AveragePrice'].mode()
df.describe().round(2).T
 然后探究一下各产地总和:
df["region"].value_counts()    #产地总和
 发现数据很均匀,然后探究一下各地的平均价格:
df[['AveragePrice','region']].groupby(by='region').mean().sort_values('AveragePrice',ascending=False)  #各地的平均价格的降序排列

发现最贵的哈特福德与最便宜的休斯顿价格差距很大,这里我们猜想,抛开地理原因,是不是因为有机的更贵导致两地价格差距很大?

df[['AveragePrice','type']].groupby(by='type').mean().sort_values('AveragePrice',ascending=False)  #有机和普通的平均价格

查看有机和普通的平均价格,发现确实有一定差距,再查看两地有机和普通的平均价格:

df.loc[df['region'] == 'HartfordSpringfield'].groupby(by="type").mean()
df.loc[df['region'] == 'Houston'].groupby(by="type").mean()
发现两地有机和普通价格差距都很大,再查看有机和普通的数量:
df.loc[df['region'] == 'HartfordSpringfield']['type'].value_counts()
df.loc[df['region'] == 'Houston']['type'].value_counts()

发现数量相同,由此可得数据应该是经过处理,结合前面的两地平均价格,发现哈特福德牛油果贵不是因为他们消耗了更多贵的有机牛油果,抛开地理原因,我们再次猜想,休斯顿牛油果便宜是因为他们吃的更多,查看两地消耗牛油果数量:

sum(df.loc[df['region'] == 'HartfordSpringfield']['Total Bags'])
sum(df.loc[df['region'] == 'Houston']['Total Bags'])

发现休斯顿消耗的牛油果数量是哈特福德的五倍左右,猜想初步成立,根据字段Small Bags、Large Bags的提示再次猜想,休斯顿牛油果便宜是因为他们一次性买更多牛油果,查看数据:

sum(df.loc[df['region'] == 'HartfordSpringfield']['Small Bags'])
sum(df.loc[df['region'] == 'Houston']['Small Bags'])

发现哈特福德牛油果小包购买率达95.11%,而休斯顿的牛油果小包购买率64.77%,好像相关,计算皮尔逊相关系数:

import numpy as np
u1,u2 = df['AveragePrice'].mean(),(df['Small Bags']/df['Total Bags']).mean()  # 计算均值
df['(x-u1)*(y-u2)'] = (df['AveragePrice'] - u1) * ((df['Small Bags']/df['Total Bags']) - u2)
df['(x-u1)**2'] = (df['AveragePrice'] - u1)**2
df['(y-u2)**2'] = ((df['Small Bags']/df['Total Bags']) - u2)**2
r = df['(x-u1)*(y-u2)'].sum() / (np.sqrt(df['(x-u1)**2'].sum() * df['(y-u2)**2'].sum()))
print('Pearson相关系数为:%.4f' % r)

发现两者相关系数为0.1168,虽然是正相关,但是因为相关系数小于0.3所以不是线性相关,猜想错误。
再次猜想,平均价格和年份有关系,查看数据:

df.loc[df['year'] == 2015]['AveragePrice'].mean()
df.loc[df['year'] == 2016]['AveragePrice'].mean()
df.loc[df['year'] == 2017]['AveragePrice'].mean()
df.loc[df['year'] == 2018]['AveragePrice'].mean()

发现牛油果的平均价格是先在2016年小幅降低,再在2017年大幅升高,最后回归到正常价格。
7.总结
在这次数据分析中,我用了pandas进行数据的筛选、数据的描述和数据的分组和聚合,利用了皮尔逊计算相关系数,简单地分析了数据,合理提出猜想,并验证猜想,得出结论,但缺点是没有将时间和变化联系起来,不能很好的动态反应价格随时间的变化。
在本次实训中学到的关于前端、web和日志的相关技术也没有很好的利用上,内容比较单薄,不够详实充分。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/707332.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号