Python Pandas 模块教程
Python中的Pandas模块
- Pandas is an open source library in Python. It provides ready to use high-performance data structures and data analysis tools.
- Pandas module runs on top of NumPy and it is popularly used for data science and data analytics.
- NumPy is a low-level data structure that supports multi-dimensional arrays and a wide range of mathematical array operations. Pandas has a higher-level interface. It also provides streamlined alignment of tabular data and powerful time series functionality.
- DataFrame is the key data structure in Pandas. It allows us to store and manipulate tabular data as a 2-D data structure.
- Pandas provides a rich feature-set on the DataFrame. For example, data alignment, data statistics, slicing, grouping, merging, concatenating data, etc.
安装和开始使用Pandas
您需要安装Python 2.7及以上版本才能安装Pandas模块。如果您在使用conda环境,则可以使用以下命令进行安装。
conda install pandas
如果您正在使用PIP,则运行以下命令安装pandas模块。
pip3.7 install pandas

要在Python脚本中导入Pandas和NumPy,请添加以下代码片段:
import pandas as pd
import numpy as np
由于Pandas依赖于NumPy库,我们需要引入这个依赖。
Pandas模块中的数据结构
Pandas模块提供了三种数据结构,分别如下:
- Series: It is a 1-D size-immutable array like structure having homogeneous data.
- DataFrames: It is a 2-D size-mutable tabular structure with heterogeneously typed columns.
- Panel: It is a 3-D, size-mutable array.
熊猫数据框架
DataFrame是最重要且广泛使用的数据结构,是一种存储数据的标准方式。DataFrame的数据以行和列对齐,就像SQL表或电子表格数据库一样。我们可以将数据硬编码到DataFrame中,也可以导入CSV文件、tsv文件、Excel文件、SQL表等。我们可以使用下面的构造函数来创建一个DataFrame对象。
pandas.DataFrame(data, index, columns, dtype, copy)
下面是参数的简要描述:
- data – create a DataFrame object from the input data. It can be list, dict, series, Numpy ndarrays or even, any other DataFrame.
- index – has the row labels
- columns – used to create column labels
- dtype – used to specify the data type of each column, optional parameter
- copy – used for copying data, if any
有很多方法来创建DataFrame。我们可以从字典或字典列表创建DataFrame对象。我们还可以从元组列表、CSV、Excel文件等创建DataFrame。让我们运行一个简单的代码,从字典列表中创建一个DataFrame。
import pandas as pd
import numpy as np
df = pd.DataFrame({
"State": ['Andhra Pradesh', 'Maharashtra', 'Karnataka', 'Kerala', 'Tamil Nadu'],
"Capital": ['Hyderabad', 'Mumbai', 'Bengaluru', 'Trivandrum', 'Chennai'],
"Literacy %": [89, 77, 82, 97,85],
"Avg High Temp(c)": [33, 30, 29, 31, 32 ]
})
print(df)

将数据从CSV导入到DataFrame中
我们也可以通过导入CSV文件来创建DataFrame。CSV文件是一个文本文件,每行包含一个数据记录。记录中的值使用“逗号”字符分隔。Pandas提供了一个有用的方法,名为read_csv(),用于将CSV文件的内容读取到DataFrame中。例如,我们可以创建一个名为’cities.csv’的文件,其中包含印度城市的详细信息。该CSV文件存储在包含Python脚本的同一目录中。可以使用以下命令导入此文件:
import pandas as pd
data = pd.read_csv('cities.csv')
print(data)
我们的目标是加载数据并进行分析以得出结论。因此,我们可以使用任何方便的方法来加载数据。在本教程中,我们会硬编码DataFrame的数据。
检查DataFrame中的数据
运行数据帧使用其名称显示整个表格。在实时中,要分析的数据集将拥有数千行。为了分析数据,我们需要检查来自大量数据集的数据。Pandas提供了许多有用的函数,可以仅检查我们所需的数据。我们可以使用df.head(n)来获取前n行,或df.tail(n)来打印最后n行。例如,下面的代码从数据帧中打印出前2行和最后1行。
print(df.head(2))

print(df.tail(1))

获取记录的统计摘要
我们可以使用df.describe()函数对数据进行统计摘要(计数、平均值、标准差、最小值、最大值等)。现在,让我们使用这个函数,来显示“读写能力%”列的统计摘要。为了做到这一点,我们可以添加以下代码片段:
print(df['Literacy %'].describe())

2.记录排序
我们可以使用df.sort_values()函数按任意列对记录进行排序。例如,让我们按照“识字率”一列进行降序排序。
print(df.sort_values('Literacy %', ascending=False))

切割记录
可以使用列名提取特定列的数据。例如,要提取“Capital”列,我们使用:
df['Capital']
或者
(df.Capital)

print(df[['State', 'Capital']])

df[0:3]

4. 数据过滤
还可以根据列值进行过滤。例如,下面的代码会过滤掉具有超过90%识字率的列。
print(df[df['Literacy %']>90])

print(df[df['State'].isin(['Karnataka', 'Tamil Nadu'])])

5. 更改列名
可以使用df.rename()函数来重命名列。该函数以旧的列名和新的列名作为参数。例如,我们将列’Literacy %’重命名为’Literacy percentage’。
df.rename(columns = {'Literacy %':'Literacy percentage'}, inplace=True)
print(df.head())

数据整理
数据科学涉及对数据进行处理,以便能够与数据算法很好地配合。数据整理是处理数据的过程,如合并、分组和连接。Pandas库提供了merge()、groupby()和concat()等有用的函数来支持数据整理任务。让我们创建两个数据框并展示数据整理函数,以更好地理解它。
import pandas as pd
d = {
'Employee_id': ['1', '2', '3', '4', '5'],
'Employee_name': ['Akshar', 'Jones', 'Kate', 'Mike', 'Tina']
}
df1 = pd.DataFrame(d, columns=['Employee_id', 'Employee_name'])
print(df1)

import pandas as pd
data = {
'Employee_id': ['4', '5', '6', '7', '8'],
'Employee_name': ['Meera', 'Tia', 'Varsha', 'Williams', 'Ziva']
}
df2 = pd.DataFrame(data, columns=['Employee_id', 'Employee_name'])
print(df2)

合并 (hé
现在,让我们使用merge()函数将我们创建的两个DataFrame按照’Employee_id’的值进行合并:
print(pd.merge(df1, df2, on='Employee_id'))

b. 分组 zǔ)
分组是将数据按不同类别进行收集的过程。例如,在以下示例中,“员工名字”字段两次出现了“Meera”这个名称。因此,让我们按照“员工名字”一列对其进行分组。
import pandas as pd
import numpy as np
data = {
'Employee_id': ['4', '5', '6', '7', '8'],
'Employee_name': ['Meera', 'Meera', 'Varsha', 'Williams', 'Ziva']
}
df2 = pd.DataFrame(data)
group = df2.groupby('Employee_name')
print(group.get_group('Meera'))

c. 连接
数据连接涉及将一组数据添加到另一组数据中。Pandas提供了一个名为`concat()`的函数来连接DataFrame。例如,我们可以使用`concat()`函数来连接df1和df2两个DataFrame。
print(pd.concat([df1, df2]))

通过传递一个系列字典创建一个数据框架。
创建一个Series,我们可以使用pd.Series()方法并将一个数组传递给它。让我们按照以下方式创建一个简单的Series:
series_sample = pd.Series([100, 200, 300, 400])
print(series_sample)

d = {'Matches played' : pd.Series([400, 300, 200], index=['Sachin', 'Kohli', 'Raina']),
'Position' : pd.Series([1, 2, 3, 4], index=['Sachin', 'Kohli', 'Raina', 'Dravid'])}
df = pd.DataFrame(d)
print(df)

列选择、添加、删除
可以从DataFrame中选择特定的列。例如,要仅显示第一列,我们可以将上述代码改写为:
d = {'Matches played' : pd.Series([400, 300, 200], index=['Sachin', 'Kohli', 'Raina']),
'Position' : pd.Series([1, 2, 3, 4], index=['Sachin', 'Kohli', 'Raina', 'Dravid'])}
df = pd.DataFrame(d)
print(df['Matches played'])

d = {'Matches played' : pd.Series([400, 300, 200], index=['Sachin', 'Kohli', 'Raina']),
'Position' : pd.Series([1, 2, 3, 4], index=['Sachin', 'Kohli', 'Raina', 'Dravid'])}
df = pd.DataFrame(d)
df['Runrate']=pd.Series([80, 70, 60, 50], index=['Sachin', 'Kohli', 'Raina', 'Dravid'])
print(df)

del df['Matches played']
或者
df.pop('Matches played')

结论
在本教程中,我们对Python的Pandas库进行了简要介绍。我们还进行了实际示例,以释放在数据科学领域中使用的Pandas库的强大功能。我们还介绍了Python库中的不同数据结构。参考:Pandas官方网站。