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

2023-06-0408:38:01后端程序开发Comments1,031 views字数 2788阅读模式
作者:Jackpop
来源:知乎文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

pandas是一个Python软件包,提供快速、灵活和富有表现力的数据结构,旨在使处理 "关系型 "或 "标签型 "数据变得简单和直观文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

这个解释是比较官方的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

我个人理解,Pandas相当于Python中Excel、SQL这类表格工具,只是在此基础上它提供了更加丰富而高效的功能。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

熟悉Excel和SQL的同学应该理解,Excel和SQL经常用于一维和二维数据的处理,效率非常高。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

以数据分析为例,假如我们利用Python从零开始开发一个程序,需要先后实现数据的读取、数据结构的定义、数据遍历、数据处理、数据计算....文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

这是一个繁琐而多余的过程。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

通过SQL或者Excel,我们可以借助countsumjoingroup by等函数,仅有几行代码就可以实现Python几十甚至上百行代码的工作,极大的提升了开发效率。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

而Python相对于SQL、Excel则提供了更加灵活、更加强大的数据分析/处理功能。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

它的功能包括但不限于下述内容:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

  • 数据清理
  • 数据填充
  • 数据规范化
  • 合并和连接
  • 数据可视化
  • 统计分析
  • 数据检查
  • 数据读写

下面,就抽取方面介绍一下Pandas。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

1. 数据读写

Pandas的优点之一,是它有许多内置函数,可以从各种数据源中读取数据。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

SQL、Excel、CSV、JSON、HDF5、Parquet、PDF、Pickle、TXT,等等。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

这样,我们就不需要再用Python针对不同类型的数据解释写一个对应的处理函数,可以很容易的兼容不同数据存储格式。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

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相关的第三方工具包,然后再写读写代码、异常处理、数据遍历,会麻烦很多。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

2. 数据探索

读取数据之后,接下来要做的就是探索和熟悉数据。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

在这里,以Netflix电影数据库数据为例进行介绍。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

读取CSV文件前3行数据:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

df = pd.read_csv('netflix.csv')
df.head(3)
Python的pandas库,如何最简单、通俗地理解?

列出所有列文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

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

数据统计文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

我们可以使用value_counts()来探索一个有离散值的列,这个函数将列出所有的唯一值,以及它们在数据集中出现的频率:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

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

数据描述文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

对于有数字数据的列,我们有一个非常整洁的功能,将显示许多有用的统计数据:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

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

除此之外,还有一些其他的简洁高效的函数,可以尝试一下:group by, min(), max(), mean(), sum()文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

3. 数据可视化

数据可视化能够让我们更加直观的去理解和分析数据,因此,在数据分析中可视化功能也直观重要。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

Pandas除了提供数据读取和探索功能外,还有数据可视化功能。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

直方图文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

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

柱状图文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

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

折线图文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

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

当然,有一些方法可以使这些图表更漂亮,甚至可以交互。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

但是,使用Pandas,通过简单几行代码,不需要第三方工具包,就可以实现对数据更加直观的显示。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

4. 数据ETL

目前数据ETL主要都是使用SQL,容易实现、可解释性强。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

Python的Pandas也可以轻松实现数据ETL,它可以帮助我们以多种方式清理和转换数据。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

现在,由于我们几乎从不只从一个数据源读取数据,这就需要用到数据的关联、合并、转化,在Pandas中都可以轻松实现。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

关联文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

df = pd.merge(df1, df2, on = keyColum, how = 'inner')

拼接文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

df  = pd.concat([df1, df2])

字符串函数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

# 转成大写
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()

数据筛选文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

filteredDf = df[df['release_year']==2020]

函数操作文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

这是Pandas为我们提供的最强大的函数之一。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

它可以让你以逐行的方式(也是逐列的方式)应用一些转换、条件,甚至是用户定义的函数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

下面的代码片断显示了如何将用户定义的函数应用于一列:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

def upper(title):
    newTitle = str(title).upper()
    return newTitle
df['TITLE'] = df['title'].apply(lambda x: upper(x))

5. 数据导出

一旦我们把数据处理完,下一步要做的就是如何保存数据。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

Pandas也提供了非常便捷的功能。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

Excel文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

df.to_excel('myData.xlsx',index=False, sheet_name='Sheet1')

CSV文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

df.to_csv('myData.csv',index=False)

数据库文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

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的帮助下,你可以轻松做很多事情。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

尤其,Python是独立于平台的。我们可以在任何地方运行我们的ETLs脚本。在SSIS、Alteryx、Azure、AWS上,在Power BI内,甚至通过将我们的Python代码转换为可执行文件,作为一个独立的应用程序来运行。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/44271.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/44271.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定