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库。所以只要输入:
代码语言:javascript复制
代码语言:javascript复制Pip install Faker
Pip install pydbgen
}
要开始使用pydbgen,启动一个pydbgen对象:
代码语言:javascript复制import pydbgen
from pydbgen
import pydbgenmyDB=pydbgen.pydb()
}
您可以选择要生成的数据类型和数量。
请注意,所有内容都以字符串/文本的形式返回。第一个参数是条目数,第二个参数是为其生成假数据的字段/属性。
生成包含随机条目的pandas数据aframe:
代码语言:javascript复制testdf= myDB.gen_dataframe(5,[‘name’,’city’,’phone’,’date’])
}
这将导致数据帧如下所示:
测试数据集
当然,还有更多的字段可用,例如:年龄、生日、信用卡号码、SSN、电子邮件ID、实际地址、公司名称、职位等。
2
数据帧操作
在本节中,我将展示一些关于Pandas数据帧的常见问题的提示。
注意:有些方法不直接修改数据帧,而是返回所需的数据帧。要直接更改数据帧而不返回所需的数据帧,可以添加inplace=true作为参数。
出于解释的目的,我将把数据框架称为“数据”——您可以随意命名它。
在不知道索引的情况下检索数据:
通常使用大量数据,几乎不可能知道每一行的索引。这个方法可以帮你完成任务。因此,在因此,在“数据”数据框中,我们正在搜索user_id等于1的一行的索引。
代码语言:javascript复制indexRequired = data.index[data[‘user_id’] == 1]
检索与该索引对应的行:
代码语言:javascript复制rowRequired = data.loc[indexRequired]
很简单,对吧?
获取列的所有唯一属性值:
假设我们有一个整数属性user_id:
代码语言:javascript复制listOfUniqueUserIDs = data[‘user_id’].unique()
然后你可以迭代这个列表,或者用它做任何你想做的事情。
填充列缺少的值:
与大多数数据集一样,必须期望大量的空值,这有时会令人恼火。当然,如果愿意的话,您可以让它们保持原样,但是如果您想添加值来代替空值,您必须首先声明哪些值将被放入哪些属性中(对于其空值)。
所以这里我们有两列,分别称为“标签”和“难度”。我想将“MCQ”用于任何空的“tags”值,将“N”用于任何空的“difficulty”值。
代码语言:javascript复制missing = {‘tags’:’mcq’, ‘difficulty’: ‘N’}
data.fillna(value = missing, inplace = True)
从数据帧中获取已排序的样本:
假设您想通过一个id属性对2000行(甚至整个数据帧)的样本进行排序。事实证明,这很简单。
代码语言:javascript复制sample = data.sample(n=2000)
sorted_sample = sample.sort_values(by=[‘id’])
使用GroupBy对记录分组:
如果您想知道每个用户/id与之交互的属性的平均数,该怎么办?
让我用一个例子来演示如何做到这一点。我们有用户用分数解决不同问题的历史,我们想知道每个用户的平均分数。找到这一点的方法也相对简单。
代码语言:javascript复制groupbyExample = data.groupby(‘user_id’)[‘scores’].mean()
3
结论
因此,到目前为止,您应该能够创建一个数据帧,并用随机数据填充它来进行实验。这些数据将为您节省查找自定义数据集的麻烦。
此外,数据可以是任何首选大小,可以覆盖许多数据类型。此外,您还可以使用上述的一些技巧来更加熟悉Pandas,并了解它是多么强大的一种工具。最后,我希望这篇文章对您有所帮助,并感谢您花时间阅读它。