Pandas数据结构基础用法

指尖编程 2021-04-06 17:26:24
numpy


Head与Tail

head()与tail()用于快速预览Series与DataFrame,默认显示5条数据,也可以指定显示数据的数量。

属性与底层数据

Pandas可以通过多个属性访问元数据:

shape:输出对象的轴维度,与ndarray一致

轴标签:

Series:Index(仅有此轴)

DataFrame:Index(行)与列

Pandas对象(Index、Series、DataFrame)相当于数组的容器,用于存储数据、执行计算。大部分类型的底层数组都是numpy.ndarray。不过,Pandas与第三方支持库一般都会扩展NumPy类型系统,添加自定义数组。

.array属性用于提取Index或Series里的数据。

array一般指ExtensionArray。

提取NumPy数组,用to_numpy()或numpy.asarray()。

Series与Index的类型是ExtensionArray时,to_numpy()会复制数据,并强制转换值。

to_numpy()可以控制numpy.ndarray生成的数据类型。以带时区的datetme为例,NumPy未提供时区信息的datetime数据类型,Pandas则提供了两种表现形式:

1.一种是带Timestamp的numpy.ndarray,提供了正确的tz信息。

2.另一种是datetime64[ns],这也是一种numpy.ndarray,值被转化为UTC,但去掉了时区信息。

时区信息可以用dtype=object保存

或用dtype=’datetime64[ns]’去除。

提取DataFrame里的原数据稍微有点复杂。DataFrame里所有列的数据类型都一样时,DataFrame.to_numpy()返回底层数据:

DataFrame为同构型数据时,Pandas直接修改原始ndarray,所以修改会直接反应在数据结构里。对于异构型数据,即DataFrame列的数据类型不一样时,就不是这种操作模式了,与轴标签不同,不能为值的属性赋值。

这里我们要注意处理异构型数据时,输出结果ndarray的数据类型适用于涉及的各类数据。若DataFrame里包含字符串,输出结构的数据类型就是object。要是只有浮点数或整数,则输出结果的数据类型是浮点数。

以前,Pandas推荐用Series.values或DataFrame.values从Series或DataFrame里提取数据。

但Pandas改进了此功能,现在,推荐用.array或to_numpy提取数据,别再用.values了。

.values有以下2个缺点:

1.Series含扩展类型时,Series.values无法判断到底是改返回NumPy array,还是返回Extension array。而Series.array则只返回ExtensionArray,且不会复制数据。Series.to_numpy则返回NumPy数组,其代价是需要复制、并强制转换数据的值。

2.DataFrame含多种数据类型时,DataFrame.values会复制数据,并将数据的值强制转换同一种数据类型,这是一种代价较高的操作。DataFrame.to_numpy()则返回NumPy数组,这种方式更清晰,也不会把DataFrame里的数据都当作一种类型。

加速操作

借助numexpr与bottleneck支持库,Pandas可以加速特定类型的二进制数值与布尔操作。

处理大型数据集时,这两个支持库特别有用,加速效果也非常明显。numexpr使用智能分块、缓存与多核技术。bottleneck是一组专属cython例程,处理含nans值的数组时,特别快。

请看下面这个例子(DataFrame包含100列×10万行数据):

这两个支持库默认为启用状态,可用以下选项设置:

如果你想学习Python,但是找不到学习路径和资源,欢迎上指尖编程

在线交互式学习,学python更快更好!

版权声明
本文为[指尖编程]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4896486/blog/5009776

  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