Products
GG网络技术分享 2025-03-18 16:09 2
选自Medium
作者:Rudolf Höhn机器之心编译
参与:李诗萌、张倩
在本文中,作者从 Pandas 的简介开始,一步一步讲解了 Pandas 的发展现状、内存优化等问题。这是一篇最佳实践教程,既适合用过 Pandas 的读者,也适合没用过但想要上手的小白。
通过本文,你将有望发现一到多种用 pandas 编码的新方法。
本文包括以下内容:
在阅读本文时,我建议你阅读每个你不了解的函数的文档字符串(docstrings)。简单的 Google 搜索和几秒钟 Pandas 文档的阅读,都会使你的阅读体验更加愉快。
Pandas 的定义和现状
什么是 Pandas?
Pandas 是一个「开源的、有 BSD 开源协议的库,它为 Python 编程语言提供了高性能、易于使用的数据架构以及数据分析工具」。总之,它提供了被称为 DataFrame 和 Series(对那些使用 Panel 的人来说,它们已经被弃用了)的数据抽象,通过管理索引来快速访问数据、执行分析和转换运算,甚至可以绘图(用 matplotlib 后端)。
Pandas 的当前最新版本是 v0.25.0 (https://github.com/pandas-dev/pandas/releases/tag/v0.25.0)
Pandas 正在逐步升级到 1.0 版,而为了达到这一目的,它改变了很多人们习以为常的细节。Pandas 的核心开发者之一 Marc Garcia 发表了一段非常有趣的演讲——「走向 Pandas 1.0」。
演讲链接:https://www.youtube.com/watch?v=hK6o_TDXXN8
用一句话来总结,Pandas v1.0 主要改善了稳定性(如时间序列)并删除了未使用的代码库(如 SparseDataFrame)。
数据
让我们开始吧!选择「1985 到 2016 年间每个国家的自杀率」作为玩具数据集。这个数据集足够简单,但也足以让你上手 Pandas。
数据集链接:https://www.kaggle.com/russellyates88/suicide-rates-overview-1985-to-2016
在深入研究代码之前,如果你想重现结果,要先执行下面的代码准备数据,确保列名和类型是正确的。
import pandas as pdimport numpy as npimport os to download https://www.kaggle.com/russellyates88/suicide-rates-overview-1985-to-2016data_path = path/to/folder/df = (pd.read_csv(filepath_or_buffer=os.path.join(data_path, master.csv)) .rename(columns={suicides/100k pop : suicides_per_100k, gdp_for_year ($) : gdp_year, gdp_per_capita ($) : gdp_capita, country-year : country_year}) .assign(gdp_year=lambda _df: _df[gdp_year].str.replace(,,).astype(np.int64)) )
提示:如果你读取了一个大文件,在 read_csv(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html)中参数设定为 chunksize=N,这会返回一个可以输出 DataFrame 对象的迭代器。
这里有一些关于这个数据集的描述:
Demand feedback