Pandas 数据分析技巧与诀窍

2019年08月29日 由 sunlei 发表 154659 0


Pandas是一个建立在NumPy之上的开源Python库。Pandas可能是Python中最流行的数据分析库。它允许你做快速分析,数据清洗和准备。Pandas的一个惊人之处是,它可以很好地处理来自各种来源的数据,比如:Excel表格、CSV文件、SQL文件,甚至是网页。

在本文中,我将向您展示一些关于Pandas中使用的技巧。

它将分为以下几点:

1、在Pandas数据流中生成数据。

2、数据帧内的数据检索/操作。

1. 数据生成:


通常,SQL或数据科学的初学者很难轻松访问用于实践SQL命令的大型示例数据库文件(. db或.sqlite)。拥有一个简单的工具或库来生成一个包含多个表的大型数据库,其中充满了您自己选择的数据,这不是很棒吗?幸运的是,有一个库提供了这样一个服务—— pydbgen。

pydbgen到底是什么?


它是一个轻量级的、纯python库,用于生成随机有用的条目(例如姓名、地址、信用卡号码、日期、时间、公司名称、职位名称、车牌号码等),并将它们保存在pandas dataframe对象中、数据库文件中的SQLite表中或MS Excel文件中。

要安装pydbgen,需要安装Faker库。所以只要输入:

  • Pip install Faker

  • Pip install pydbgen


要开始使用pydbgen,启动一个pydbgen对象:
import pydbgen
from pydbgen
import pydbgenmyDB=pydbgen.pydb()

生成包含随机条目的pandas数据aframe:

您可以选择要生成的数据类型和数量。请注意,所有内容都以字符串/文本的形式返回。第一个参数是条目数,第二个参数是为其生成假数据的字段/属性。
testdf= myDB.gen_dataframe(5,[‘name’,’city’,’phone’,’date’])

这将导致数据帧如下所示:

[caption id="attachment_43481" align="aligncenter" width="610"] 测试数据集[/caption]

当然,还有更多的字段可用,例如:年龄、生日、信用卡号码、SSN、电子邮件ID、实际地址、公司名称、职位等。

2.数据帧操作:


在本节中,我将展示一些关于Pandas数据帧的常见问题的提示。

注意:有些方法不直接修改数据帧,而是返回所需的数据帧。要直接更改数据帧而不返回所需的数据帧,可以添加inplace=true作为参数。

出于解释的目的,我将把数据框架称为“数据”——您可以随意命名它。

在不知道索引的情况下检索数据:


通常使用大量数据,几乎不可能知道每一行的索引。这个方法可以帮你完成任务。因此,在因此,在“数据”数据框中,我们正在搜索user_id等于1的一行的索引。
indexRequired = data.index[data[‘user_id’] == 1]

检索与该索引对应的行:


rowRequired = data.loc[indexRequired]

很简单,对吧?

获取列的所有唯一属性值:


假设我们有一个整数属性user_id:
listOfUniqueUserIDs = data[‘user_id’].unique()

然后你可以迭代这个列表,或者用它做任何你想做的事情。

填充列缺少的值:


与大多数数据集一样,必须期望大量的空值,这有时会令人恼火。当然,如果愿意的话,您可以让它们保持原样,但是如果您想添加值来代替空值,您必须首先声明哪些值将被放入哪些属性中(对于其空值)。

所以这里我们有两列,分别称为“标签”和“难度”。我想将“MCQ”用于任何空的“tags”值,将“N”用于任何空的“difficulty”值。
missing = {‘tags’:’mcq’, ‘difficulty’: ‘N’}

data.fillna(value = missing, inplace = True)

从数据帧中获取已排序的样本:


假设您想通过一个id属性对2000行(甚至整个数据帧)的样本进行排序。事实证明,这很简单。
sample = data.sample(n=2000)

sorted_sample = sample.sort_values(by=[‘id’])

使用GroupBy对记录分组:


如果您想知道每个用户/id与之交互的属性的平均数,该怎么办?

让我用一个例子来演示如何做到这一点。我们有用户用分数解决不同问题的历史,我们想知道每个用户的平均分数。找到这一点的方法也相对简单。
groupbyExample = data.groupby(‘user_id’)[‘scores’].mean()

结论


因此,到目前为止,您应该能够创建一个数据帧,并用随机数据填充它来进行实验。这些数据将为您节省查找自定义数据集的麻烦。

此外,数据可以是任何首选大小,可以覆盖许多数据类型。此外,您还可以使用上述的一些技巧来更加熟悉Pandas,并了解它是多么强大的一种工具。最后,我希望这篇文章对您有所帮助,并感谢您花时间阅读它。

原文链接:https://heartbeat.fritz.ai/tips-and-tricks-for-data-analysis-with-pandas-dc0ae909e6be
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
写评论取消
回复取消