Pandas概论

人工智能遇见磐创 2020-11-16 23:49:28
pandas 博客园 技术开发 概论


作者|Billy Fetzner
编译|VK
来源|Towards Data Science

我认为,既然你点开了这个页面,你可能有大量的数据需要分析,你可能正在想最好和最有效的方法来解决你数据的一些问题。你问题的答案可以通过Pandas解决。

如何接触Pandas

由于Pandas的流行,它有自己的传统缩写,所以无论何时将Pandas导入python,请使用以下命名:

import pandas as pd

Pandas包的主要用途是数据框

Pandas API将Pandas数据帧定义为:

二维、大小可变、潜在的异构表格数据。数据结构还包含轴(行和列)。算术运算对行标签和列标签进行对齐。可以认为是一个类似于dict的容器,用于存储序列对象。是Pandas主要的数据结构。

基本上,这意味着你有包含在格式中的数据,如下所示。在行和列中找到的数据:

数据帧非常有用,因为它们提供了一种高效的方法来可视化数据,然后按你希望的方式操作数据。

这些行可以很容易地被索引引用,索引是数据帧最左边的数字。索引将是从零开始的编号,除非你指定每一行的名称。列也可以很容易地被列名称(例如“Track name”)或其在数据帧中的位置进行引用。我们将在本文后面详细讨论引用行和列。

创建数据帧

创建Pandas数据帧的方法有几种:

  1. 从.csv文件导入数据(或其他文件类型,例如Excel、SQL数据库)

  2. 从列表中

  3. 从字典里

  4. 从numpy数组

  5. 其他

通常,你将主要将.csv文件或某种类型的数据源的数据放入Pandas数据框架中,而不是从头开始,因为这将需要非常长的时间来完成,这取决于你拥有的数据量。以下是python字典中的一个快速、简单的示例:

import pandas as pd
dict1 = {'Exercises': ['Running','Walking','Cycling'],
'Mileage': [250, 1000, 550]}
df = pd.DataFrame(dict1)
df

输出:

字典键(“Exercises”和“Mileage”)成为相应的列标题。字典中的值是本示例中的列表,成为数据帧中的单个数据点。Running是“Exercises”列表中的第一个,250将被列在第二列的第一个。另外,你会注意到,由于我没有为数据帧的索引指定标签,因此它会自动标记为0、1和2。

但是,就像我之前所说的,创建Pandas数据帧的最可能方法是从csv或其他类型的文件中导入,你将导入该文件来分析数据。只需以下内容即可轻松完成:

df = pd.read_csv("file_location.../file_name.csv")

pd.read_csv是一种非常强大和通用的方法,根据你希望如何导入数据,它将非常有用。如果csv文件已经附带了头或索引,则可以在导入时指定。为了充分了解pd.read_csv,我建议你看看这里的PandasAPI:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html?highlight=read_csv

第一件事

现在你已经准备好了这个巨大的数据集,你必须查看它,看看它的外观。作为一个分析这些数据的人,首先必须对数据集熟悉,并真正了解数据集中发生了什么。我喜欢用四种方法来了解我的数据。

  1. .head() & .tail()
  2. .info()
  3. .describe()
  4. .sample()
raw_song.head()

它显示数据帧的前5行和每个列,以便你轻松地总结数据的外观。你还可以在方法中指定一定数量的行,以显示更多行。

.tail仅显示最后5行。

raw_song.tail()

从这两个快速方法中,我对列名和数据的外观有了一个大致的了解,这只是从数据集的一个小样本中得到的。这些方法也非常有用,尤其是对于Spotify数据集这样的数据集,处理超过300万行的数据时,你可以轻松地显示数据集并快速了解数据,而且你的计算机也不会花很长时间来显示数据。

.info也很有用,它向我显示了所有列、它们的数据类型以及是否有null数据点。

raw_song.info(verbose=True, null_counts=True)

如果你有完整的整型或浮点型列(即'Position'、'Streams'),那么.describe是一个有用的方法,可以帮助你更好地了解数据集,因为它将显示关于这些列的许多描述性统计信息。

raw_song.describe()

最后,.sample将允许你随机对数据帧进行采样,并查看你所做的任何操作是否错误地更改了数据集中的某些内容,而且当你第一次探索数据集时,也可以很好地了解数据集包含哪些内容

raw_song.sample(10)

在探索和准备数据集进行分析时,我始终使用这些方法。每当我更改列中的数据、更改列名或添加/删除行/列时,我都会通过至少快速运行前面5个方法中的一些来确保所有更改都按我希望的方式进行。

选择行或列

太棒了,现在你知道如何将数据集作为一个整体来看待,但实际上你只想查看几列或几行,然后将其余部分排除在外。

.loc[]和.iloc[]

这两个方法将以不同的方式来实现这一点,这取决于你能够引用特定行或列的方式。

如果知道行或列的标签,请使用.loc[]。

如果知道行或列的索引,请使用.iloc[]。

如果你两者都知道,就选你最喜欢的。

因此,回到Spotify数据集。你可以使用.loc[]或.iloc[]查看列“Track Name”。如果知道列的标签可以使用.loc[],所以我将使用以下内容:

raw_song.loc[:,'Track Name']

第一个括号后面的冒号指定我引用的行,由于我希望所有行都位于“Track Name”列中,所以我使用“:”。

我将收到与.iloc[]相同的输出,但这次需要指定“Track Name”列的索引:

raw_song.iloc[:,1]

.loc[]和.iloc[]对行的作用相同,但在本例中,因为行的标签和索引都是相同的,所以它们看起来完全相同。

切片

另一种获取DataFrame部分的简单方法是使用[]并在方括号内指定列名。

raw_song[['Artist','Streams']].head()

如果你只使用一列和一组括号,你将得到Pandas Series。

raw_song['Streams']

从数据帧添加行、列

利用我们已经从.loc[]获得的信息,我们可以使用this或.insert将行或列添加到数据帧中。

添加行

如果决定使用.loc[]将行添加到dataframe,则只能将其添加到dataframe的底部。指定dataframe中的任何其他索引,删除当前在该行中的数据,并用要插入的数据替换它。

raw_song.loc[3441197] = [0,'hello','bluemen',1,"https://open.spotify.com/track/notarealtrack", '2017-02-05','ec']

你也可以使用.loc[]将列添加到数据帧中。

raw_song.loc[:,'new_col'] = 0
raw_song.tail()

除了在末尾之外,还有两种方法可以将新列插入数据帧中。

insert方法允许你指定要将列放入数据帧的位置。它接受3个参数、要放置它的索引、新列的名称以及要作为列数据放置的值。

raw_song.insert(2,'new_col',0)
raw_song.tail()

将列添加到dataframe的第二种方法是通过使用[]命名新列并使其与新数据相等,从而使其成为dataframe的一部分。

raw_song['new_col'] = 0
raw_song.tail()

通过这种方式,我无法指定新列的位置,但这是执行该操作的另一种有用方法。

从数据帧中删除行、列

如果你想删除一些行或列,这很简单,只需删除它们。

只需指定要删除的轴(行为0,列为1)和要删除的行或列的名称,就可以开始了!

raw_song.drop(labels='new_col',axis=1)

重命名索引或列

如果要将dataframe的索引更改为dataframe中的其他列,请使用.set_index并在括号中指定列的名称。但是,如果你确切知道要为索引命名的内容,请使用.rename方法。

raw_song.rename(index={0:'first'}).head()

要重命名列,请在.rename方法中指定要重命名的列以及在{}中要为其命名的名称,类似于重命名索引。

raw_song.rename(columns={'Position':'POSITION_RENAMED'}).head()

如何迭代数据帧

很多时候,当你处理数据帧中的数据时,你需要以某种方式更改数据并迭代数据帧中的所有值。最简单的方法是在pandas中内置for循环:

for index, col in raw_song.iterrows():
# 在此处操作数据

如何将数据帧写入文件

在完成对数据帧的所有操作之后,现在是导出数据帧的时候了,以便可以将其发送到其他地方。与从文件导入数据集类似,现在正好相反。Pandas有多种不同的文件类型,你可以将数据帧写入其中,但最常见的是将其写入csv文件。

pd.to_csv('file_name.csv')

现在你知道Pandas和数据帧的基本知识了。这些是数据分析工具箱中非常强大的工具。

原文链接:https://towardsdatascience.com/an-introduction-to-pandas-29d15a7da6d

欢迎关注磐创AI博客站:
http://panchuang.net/

sklearn机器学习中文官方文档:
http://sklearn123.com/

欢迎关注磐创博客资源汇总站:
http://docs.panchuang.net/

版权声明
本文为[人工智能遇见磐创]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/panchuangai/p/13991944.html

  1. 利用Python爬虫获取招聘网站职位信息
  2. Using Python crawler to obtain job information of recruitment website
  3. Several highly rated Python libraries arrow, jsonpath, psutil and tenacity are recommended
  4. Python装饰器
  5. Python实现LDAP认证
  6. Python decorator
  7. Implementing LDAP authentication with Python
  8. Vscode configures Python development environment!
  9. In Python, how dare you say you can't log module? ️
  10. 我收藏的有关Python的电子书和资料
  11. python 中 lambda的一些tips
  12. python中字典的一些tips
  13. python 用生成器生成斐波那契数列
  14. python脚本转pyc踩了个坑。。。
  15. My collection of e-books and materials about Python
  16. Some tips of lambda in Python
  17. Some tips of dictionary in Python
  18. Using Python generator to generate Fibonacci sequence
  19. The conversion of Python script to PyC stepped on a pit...
  20. Python游戏开发,pygame模块,Python实现扫雷小游戏
  21. Python game development, pyGame module, python implementation of minesweeping games
  22. Python实用工具,email模块,Python实现邮件远程控制自己电脑
  23. Python utility, email module, python realizes mail remote control of its own computer
  24. 毫无头绪的自学Python,你可能连门槛都摸不到!【最佳学习路线】
  25. Python读取二进制文件代码方法解析
  26. Python字典的实现原理
  27. Without a clue, you may not even touch the threshold【 Best learning route]
  28. Parsing method of Python reading binary file code
  29. Implementation principle of Python dictionary
  30. You must know the function of pandas to parse JSON data - JSON_ normalize()
  31. Python实用案例,私人定制,Python自动化生成爱豆专属2021日历
  32. Python practical case, private customization, python automatic generation of Adu exclusive 2021 calendar
  33. 《Python实例》震惊了,用Python这么简单实现了聊天系统的脏话,广告检测
  34. "Python instance" was shocked and realized the dirty words and advertisement detection of the chat system in Python
  35. Convolutional neural network processing sequence for Python deep learning
  36. Python data structure and algorithm (1) -- enum type enum
  37. 超全大厂算法岗百问百答(推荐系统/机器学习/深度学习/C++/Spark/python)
  38. 【Python进阶】你真的明白NumPy中的ndarray吗?
  39. All questions and answers for algorithm posts of super large factories (recommended system / machine learning / deep learning / C + + / spark / Python)
  40. [advanced Python] do you really understand ndarray in numpy?
  41. 【Python进阶】Python进阶专栏栏主自述:不忘初心,砥砺前行
  42. [advanced Python] Python advanced column main readme: never forget the original intention and forge ahead
  43. python垃圾回收和缓存管理
  44. java调用Python程序
  45. java调用Python程序
  46. Python常用函数有哪些?Python基础入门课程
  47. Python garbage collection and cache management
  48. Java calling Python program
  49. Java calling Python program
  50. What functions are commonly used in Python? Introduction to Python Basics
  51. Python basic knowledge
  52. Anaconda5.2 安装 Python 库(MySQLdb)的方法
  53. Python实现对脑电数据情绪分析
  54. Anaconda 5.2 method of installing Python Library (mysqldb)
  55. Python implements emotion analysis of EEG data
  56. Master some advanced usage of Python in 30 seconds, which makes others envy it
  57. python爬取百度图片并对图片做一系列处理
  58. Python crawls Baidu pictures and does a series of processing on them
  59. python链接mysql数据库
  60. Python link MySQL database