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 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,硕士毕业于哈尔滨工业大学,曾在华为、阿里等大厂工作,如果你对升学、就业、技术提升等有疑惑,不妨交个朋友: