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

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

这个解释是比较官方的。

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

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

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

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

通过SQL或者Excel,我们可以借助countsumjoingroup 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)
如何最简单、通俗地理解Python的pandas库?

编辑切换为居中

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

列出所有列

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

编辑切换为居中

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

数据统计

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

df["type"].value_counts()
如何最简单、通俗地理解Python的pandas库?

编辑

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

数据描述

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

df["release_year"].describe()
如何最简单、通俗地理解Python的pandas库?

编辑

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

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

3. 数据可视化

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

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

直方图

df["release_year"].hist(bins=10)
如何最简单、通俗地理解Python的pandas库?

编辑切换为居中

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

柱状图

df['country'].value_counts().head(5).plot.bar(title="Movies by Country")
如何最简单、通俗地理解Python的pandas库?

编辑切换为居中

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

折线图

df['release_year'].value_counts().sort_values().tail(20).plot.line(title="Movies released in the last 20 years")
如何最简单、通俗地理解Python的pandas库?

编辑切换为居中

添加图片注释,不超过 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 newTitle
df['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 pyodbc
server = "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,我们交个朋友吧!

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章