Python Pandas 入门

发布于 2024-05-09 12:00:13 字数 5437 浏览 14 评论 0

核心数据结构

pandas 最核心的就是 Series 和 DataFrame 两个数据结构。

类型维度说明
Series1 维带有标签的同构类型数组
DataFrame2 维表格结构,带有标签,大小可变,且包含异构的数据列
Panel3 维Panel 是 DataFrame 的容器

DataFrame 可以看做是 Series 的容器,即:一个 DataFrame 中可以包含若干个 Series。

Pandas 中的入门函数

读取数据

data=pd.read_csv('my_file.csv')
data=pd.read_csv(my_file.csv',sep=';",encoding="latin-1',nrows=1000,skiprous=[2,5])

sep 参数的意思就是分隔符。如果你要处理的是法语数据,Excel 中使用的 csv 分隔符是“;”,那么你需要通过这个 参数显式地声明分隔符。encoding 参数需要设置为“latin-1”以便能识别出法语的字符;n_rows=1000 表示读取前 1000 行数据; skiprows=[2,5]的意思是在读取文件时去掉第 2 行和第 5 行的数据。

最常用的函数是:read_csv 和 read_excel
其他几个非常好用的函数是:read_clipboard 和 read_sql

写入数据

data.to_csv("my_new_file.csv",index=None)

通过设置 index=None,就会原原本本地将数据写入到文件中。如果你没有指定 index=None,程序就会在文件中新增一个索引列,这个列在所有列的最前面,值为 0,1,2,3…直到最后一行。

我一般不用像.to_excel,.to_json,.to_pickle 这些函数,因为.to_csv 这个函数已经非常好用了!而且,csv 也是目前最常用的存储表格数据的文件格式。

检查数据

data.shape

验证(rows, columns) 信息是否与数据的行、列数相符 3

data.describe()

计算一些基本的统计量,如数据计数、均值、标准差、分位数等。

查看数据

data.head(3)

打印数据的前 3 行。和.head() 函数类似,也可以通过.tail() 函数查看数据最后几行。

data.loc[8]

打印行索引为 8 的行。(注意下标默认从 0 开始)

data.loc[8,'column_1']

打印行索引为 8,列名为’column_1’所指向的数据。

data.loc[range(4,6)]

输出行索引从 4 到 6 的行数据(不包括 6)

Pandas 中的基本函数

逻辑操作符

通过逻辑操作符或取数据的子集。可以使用 & (AND),~ (NOT) 以及 | (OR) 这些常用的操作符,在逻辑操作的前后记得加上括号。

data[data['coluan_1'].isin(["french','engllsh'])]

如果有时候需要对同一列使用大量的 OR 操作,通常使用.isin() 函数代替。

基本绘图函数

能实现这个功能主要还是得益于 matplotlib 库。像我们在介绍中说的,这个库的大部分功能都可以直接通过 pandas 使用。

data['column_numerical'].plot()

plot() 函数

data['column_numerical'].hist()

这个函数绘制的是分布图(也称直方图)。
hist() 函数

如果你使用的是 Jupyter,不要忘了在绘图前加上这一行 %matplotlib inline (只需要在 notebook 中声明一次即可)。

更新数据

data.loc[8,'column_1']='english'

用“english”替换行索引为 8 列名为‘column_1’时所指向的值。

data.loc[data['column_1']=='french','column_1']='French'

用 1 行代码更改多行数据的值。

中级函数

统计频数

value_counts()

针对行、列或者所有数据的操作

data['column_1'].map(1en)

len() 函数会应用到’column_1’列下的每一个元素。
.map() 操作会将一个函数应用到指定列的每一个元素。

data['column_1']. map(1en). map(1ambda x:x/100).plot()

Pandas 库中一个非常好用的功能就是链式方法。它能够帮助你通过一行代码完成多个操作(比如这里的.map() 函数和.plot() 函数),既简单又高效。
apply 函数会将一个函数应用到所有列。
applymap () 函数会将一个函数应用到表格的所有单元。

tqdm——独一无二的模块

当处理大规模数据集时,pandas 需要花费一些时间来完成.map(),.apply(),.applymap() 操作。tqdm 是一个非常有用 的库,能够预测这些操作什么时候执行结束。(好吧,我说谎了,我之前说过我们只用 pandas 库)。可以使用 ” pip install tqdm” 命令安装 tqdm。

# 使用 pandas 来创建 tqdm 进程
from tqdm import tqdm_notebook
tqdm_notebook().pandas()

用.progress_map() 替换.map() 函数,对.apply() 函数和.applymap() 函数也是一样的。

data['column_1'].progress_map(lambda x:x.count('e"))

进度条

相关矩阵和散布矩阵(scatter matrices)

data.corr()
data. corr(). applymap(lambda x: int(x*100)/100)

corr 相关矩阵

pd.plotting.scatter_matrix(data,figsize=(12,8))

散布矩阵示例

Pandas 的高级操作

SQL 的连接功能

data.merge(other_data,on=['column_1','column_2','column_3'])

只需要一行代码就可以将 3 列连接到一起。

分组功能

刚开始使用这个功能的时候并不容易,你首先需要掌握一些语法知识,之后你会发现自己再也离不开这个功能了。

data.groupby('column_1)['column_2'].apply(sum).reset_index()

基于某一列对数据进行分组,再对另一列上的数据执行一些函数操作。.reset_index() 函数可以将数据转变为 DataFrame(表格)的形式。

链式方式示例

遍历行

dictionary={}
for i, row in data. iterrows():
dictionary[row['column_1']]=row['column_2]

.iterrows() 函数同时获取 2 个变量并实现循环:分别是行的索引和行的对象(也就是上面代码中的 i 和 row)。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

昨迟人

暂无简介

0 文章
0 评论
21 人气
更多

推荐作者

我们的影子

文章 0 评论 0

素年丶

文章 0 评论 0

南笙

文章 0 评论 0

18215568913

文章 0 评论 0

qq_xk7Ean

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文