手把手教python_手把手教你用Python做数据探索

作者:

翻译:放飞梦想

校对:魔都斯卡

作为一个数据分析人员,如何开始数据分析?怎么开始?是一个很多初学者都很烦恼的事情。

想要知道怎么办,这篇文章以实例给出了答案。

在这篇文章中简要介绍了如何在Python中利用pandas和matplotlib做探索性数据分析(EDA)。

什么是探索性数据分析?

维基百科是这么解释的:

在统计学中,探索性数据分析(EDA)是一种分析数据集以总结其主要特征的方法,通常采用可视方法。可以使用或不使用统计模型,但主要是EDA用于查看数据在正式建模或假设检验任务之外可以告诉我们的内容。

你可以说EDA是统计学家的故事讲述方式,你可以在哪里探索数据,找到模式并讲述见解。通常,您会遇到一些问题,尝试通过执行EDA来验证这些问题。

数据分析都在用的诀窍:用Python做数据探索

Python中的EDA

很多Python库可以支持基本的EDA,本文使用和matplotlib,加上Jupyter notebook来做EDA。Jupyter notebook是一种用于数据分析和数据科学处理的工具,这是一个基于Web的平台,可以将Python,html和Markdown混合在一起来形成数据探索报告。

可以将Python,html和Markdown混合在一起来形成数据探索报告

这个例子使用的数据属于一个虚构的超级商店。目标是 通过探索数据,找到一些问题的答案,例如销售方面的最佳日期,最适合的时间,以便相应地安排员工。

如果您没有安装jupyter,请通过运行该命令进行安装pip install jupyter

如果你使用的是Anaconda版本的Python,那么Jupyter和Pandas就已经存在了。我强烈建议使用它,因为它专用于数据分析或数据科学的用户。

通过运行命令启动Jupyter Note book jupyter-notebook,它将在您的默认浏览器中打开一个界面。创建一个新笔记本并命名,你会看到如下所示:

可以在单元格中以Markdown格式添加文本,在下一个单元格中,可以开始编写代码。Jupyter笔记本有*.pynb扩展。

在第一个单元格中,刚刚添加了一个要做什么的标题。你可以在这里添加任何东西,甚至是你的私人笔记。

首先需要获取数据。数据以CSV格式提供。导入后,用 read_csv的方法pandas来读取CSV文件。

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

%matplotlib inline

如果你注意到添加了%matplotlib inline。它的作用是在页面上呈现内联图。你很快就会看到它是如何发生的。接下来,在必要时阅读CSV和数据清理。

df = pd.read_csv('data.csv')

df ['Amount'] = df ['Amount']。str.replace('$','')。str.replace(',','')

df ['Amount'] = pd.to_numeric(df ['Amount'])

来解释下这段代码。

首先删除了数据中的$符号,然后将字符串字段转换为数字,为什么要转为数字呢?

因为我们要在这个float字段上执行数学运算。一旦完成,数据就预处理好了。点击Shift+Enter运行,将出现如下结果:

通过数据探索,发现BranchName字段不必要,因为我们只有一个商店的数据!

所以让我们删除它!

df.drop('BranchName',axis=1, inplace=True)

df

它将删除列,inpace=True使其在现有的DataFrame情况下删除而不重新分配。再次运行,显示如下数据:

OK !操作清理完成后,让我们深入了解数据并找到更多的数据特征!

要做的第一件事就是找出记录数量和功能或列数。为此,将执行df.shape。当我这样做时,会发现以下结果:

(4100,9)

这是什么意思?它实际上是行x列。所以这里有4100条记录和9列,因为您也可以计算上面的列数。

除了需要了解到有多少记录和列,但是,更需要了解这个数据的详细摘要,因为将要运行df.describe(),当我这样做时输出:

好的,这里给出一些有趣的信息 如果你看到count它告诉你4100这里的记录数相同。您可以看到所有列具有相同的计数,这意味着那里没有丢失的字段。您也可以查看单个列数,例如,Units我所要做的就是:

df['Units'].count()

您将了解数据的可用性,平均值,最小值和最大值以及标准偏差和中位数。百分位数也在那里。标准偏差是一个非常有用的工具,可以确定数据如何在均值之上或之下传播。值越高,可靠性越低,反之亦然。举例std的Amount是183.5,而平均大约是35。另一方面,Units是12.7和的意思std是17.85。

让我们看看分布 Amount

num_bins = 10

plt.hist(df ['Amount'],num_bins,normed = 1,facecolor ='blue',alpha = 0.5)

plt.show()

它输出:

注意数据基线变动非常大,从+ -1000到不等1000

下面再让我们按月,日和小时查找销售情况。

按月销售

sales_by_month = df.groupby('Month').size()

print(sales_by_month)

#Plotting the Graph

plot_by_month = sales_by_month.plot(title='Monthly Sales',xticks=(1,2,3,4,5,6,7,8,9,10,11,12))

plot_by_month.set_xlabel('Months')

plot_by_month.set_ylabel('Total Sales')

您可以使用.size()仅获取特定列的聚合值或.count()每列的聚合值。因为我们只需要Month这样,所以我使用了它。绘制图表,你会发现:

如图所示,生活很美好,但直到七月,随后发生了一些事情,8月急剧下降,然后工作人员在接下来的3个月里努力工作,然后情况急剧恶化。

让我们看看日销售情况。

按日销售

# By Day

sales_by_day = df.groupby('Day').size()

plot_by_day = sales_by_day.plot(title='Daily Sales',xticks=(range(1,31)),rot=55)

plot_by_day.set_xlabel('Day')

plot_by_day.set_ylabel('Total Sales')

输出是:

本月底销售额大幅下降,否则持续不断上涨,第18天相当不错。

按小时销售

sales_by_hour = df.groupby('Hour').size()

plot_by_hour = sales_by_hour.plot(title='Hourly Sales',xticks=(range(5,22)))

plot_by_hour.set_xlabel('Working Hours')

plot_by_hour.set_ylabel('Total Sales')

输出:

从图中可以看到,好像中午之后客户访问的时间比关闭和开放时间更多。

结论

当然,数据探索远远不止这些,可以继续下去,找到更多的数据规律,但这应该足以让您了解如何利用EDA从数据中找到规律。

作为一个小练习

作为一个小练习,在数据中有一个字段Transaction Type,您的任务是找出每种交易类型的销售额。请把你的解答发到后面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值