写点什么

如何最简单、通俗地理解 Python 的 pandas 库?

作者:Jackpop
  • 2022 年 6 月 14 日
  • 本文字数:2309 字

    阅读完需:约 8 分钟

pandas 是一个 Python 软件包,提供快速、灵活和富有表现力的数据结构,旨在使处理 "关系型 "或 "标签型 "数据变得简单和直观

这个解释是比较官方的。

我个人理解,Pandas 相当于 Python 中 Excel、SQL 这类表格工具,只是在此基础上它提供了更加丰富而高效的功能。

熟悉 Excel 和 SQL 的同学应该理解,Excel 和 SQL 经常用于一维和二维数据的处理,效率非常高。

以数据分析为例,假如我们利用 Python 从零开始开发一个程序,需要先后实现数据的读取、数据结构的定义、数据遍历、数据处理、数据计算....

这是一个繁琐而多余的过程。

通过 SQL 或者 Excel,我们可以借助 count、sum、join、group by 等函数,仅有几行代码就可以实现 Python 几十甚至上百行代码的工作,极大的提升了开发效率。

而 Python 相对于 SQL、Excel 则提供了更加灵活、更加强大的数据分析/处理功能。

它的功能包括但不限于下述内容:

  • 数据清理

  • 数据填充

  • 数据规范化

  • 合并和连接

  • 数据可视化

  • 统计分析

  • 数据检查

  • 数据读写

下面,就抽取方面介绍一下 Pandas。

1. 数据读写

Pandas 的优点之一,是它有许多内置函数,可以从各种数据源中读取数据。

SQL、Excel、CSV、JSON、HDF5、Parquet、PDF、Pickle、TXT,等等。

这样,我们就不需要再用 Python 针对不同类型的数据解释写一个对应的处理函数,可以很容易的兼容不同数据存储格式。

import pandas as pd
# 从Excel中读取数据df = pd.read_excel(example.xlsx', sheet_name='sheet1') # 从CSV中读取数据df = pd.read_csv('example.csv',sep = ';')
复制代码

如果不使用 Pandas,我们首先需要安装 Excel、CSV 相关的第三方工具包,然后再写读写代码、异常处理、数据遍历,会麻烦很多。

2. 数据探索

读取数据之后,接下来要做的就是探索和熟悉数据。

在这里,以 Netflix 电影数据库数据为例进行介绍。

读取 CSV 文件前 3 行数据:

df = pd.read_csv('netflix.csv')df.head(3)
复制代码


编辑切换为居中

添加图片注释,不超过 140 字(可选)

列出所有列

df.columns
复制代码


编辑切换为居中

添加图片注释,不超过 140 字(可选)

数据统计

我们可以使用 value_counts()来探索一个有离散值的列,这个函数将列出所有的唯一值,以及它们在数据集中出现的频率:

df["type"].value_counts()
复制代码


编辑

添加图片注释,不超过 140 字(可选)

数据描述

对于有数字数据的列,我们有一个非常整洁的功能,将显示许多有用的统计数据:

df["release_year"].describe()
复制代码


编辑

添加图片注释,不超过 140 字(可选)

除此之外,还有一些其他的简洁高效的函数,可以尝试一下:group by, min(), max(), mean(), sum()。

3. 数据可视化

数据可视化能够让我们更加直观的去理解和分析数据,因此,在数据分析中可视化功能也直观重要。

Pandas 除了提供数据读取和探索功能外,还有数据可视化功能。

直方图

df["release_year"].hist(bins=10)
复制代码


编辑切换为居中

添加图片注释,不超过 140 字(可选)

柱状图

df['country'].value_counts().head(5).plot.bar(title="Movies by Country")
复制代码


编辑切换为居中

添加图片注释,不超过 140 字(可选)

折线图

df['release_year'].value_counts().sort_values().tail(20).plot.line(title="Movies released in the last 20 years")
复制代码


编辑切换为居中

添加图片注释,不超过 140 字(可选)

当然,有一些方法可以使这些图表更漂亮,甚至可以交互。

但是,使用 Pandas,通过简单几行代码,不需要第三方工具包,就可以实现对数据更加直观的显示。

4. 数据 ETL

目前数据 ETL 主要都是使用 SQL,容易实现、可解释性强。

Python 的 Pandas 也可以轻松实现数据 ETL,它可以帮助我们以多种方式清理和转换数据。

现在,由于我们几乎从不只从一个数据源读取数据,这就需要用到数据的关联、合并、转化,在 Pandas 中都可以轻松实现。

关联

df = pd.merge(df1, df2, on = ‘keyColum’, how = 'inner')
复制代码

拼接

df  = pd.concat([df1, df2])
复制代码

字符串函数

# 转成大写countries_df['Country_upper'] = countries_df['Country'].str.upper()#  转成小写countries_df['CountryCode_lower']=countries_df['CountryCode'].str.lower()# 计算字符串长度countries_df['len'] = countries_df['Country'].str.len()
复制代码

数据筛选

filteredDf = df[df['release_year']==2020]
复制代码

函数操作

这是 Pandas 为我们提供的最强大的函数之一。

它可以让你以逐行的方式(也是逐列的方式)应用一些转换、条件,甚至是用户定义的函数。

下面的代码片断显示了如何将用户定义的函数应用于一列:

def upper(title):    newTitle = str(title).upper()    return newTitledf['TITLE'] = df['title'].apply(lambda x: upper(x))
复制代码

5. 数据导出

一旦我们把数据处理完,下一步要做的就是如何保存数据。

Pandas 也提供了非常便捷的功能。

Excel

df.to_excel('myData.xlsx',index=False, sheet_name='Sheet1')
复制代码

CSV

df.to_csv('myData.csv',index=False)
复制代码

数据库

import pyodbcserver = "10.21.120.88"database = "dataBaseName"username = "usr"password = "password"
cnxn = pyodbc.connect("DRIVER={SQL Server}; SERVER="+server+";DATABASE="+database+";UID="+username+";PWD="+password)cursor = cnxn.cursor()df.to_sql('myData', cnxn, if_exists='replace', index = False)
复制代码

Pandas 是一款非常实用的工具包,在 Pandas 的帮助下,你可以轻松做很多事情。

尤其,Python 是独立于平台的。我们可以在任何地方运行我们的 ETLs 脚本。在 SSIS、Alteryx、Azure、AWS 上,在 Power BI 内,甚至通过将我们的 Python 代码转换为可执行文件,作为一个独立的应用程序来运行。

hello,大家好,我是 Jackpop,硕士毕业于哈尔滨工业大学,曾在华为、阿里等大厂工作,如果你对升学、就业、技术提升等有疑惑,不妨交个朋友:

我是Jackpop,我们交个朋友吧!


发布于: 刚刚阅读数: 3
用户头像

Jackpop

关注

还未添加个人签名 2020.09.16 加入

公众号:平凡而诗意,微信:code_7steps,全网粉丝超20万,技术进阶、优质资源、实用工具,欢迎关注!

评论

发布
暂无评论
如何最简单、通俗地理解Python的pandas库?_Jackpop_InfoQ写作社区