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 Install Pandas Module

要在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)
Python pandas Dataframe

将数据从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))
Head
print(df.tail(1))
Values

获取记录的统计摘要

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

print(df['Literacy %'].describe())
Describe

2.记录排序

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

print(df.sort_values('Literacy %', ascending=False))
Sort

切割记录

可以使用列名提取特定列的数据。例如,要提取“Capital”列,我们使用:

df['Capital']

或者

(df.Capital)
Slice Capitals
print(df[['State', 'Capital']])
Slicemultiplecol
df[0:3]
Slicerows

4. 数据过滤

还可以根据列值进行过滤。例如,下面的代码会过滤掉具有超过90%识字率的列。

print(df[df['Literacy %']>90])
Filter Lit
print(df[df['State'].isin(['Karnataka', 'Tamil Nadu'])])
Filter

5. 更改列名

可以使用df.rename()函数来重命名列。该函数以旧的列名和新的列名作为参数。例如,我们将列’Literacy %’重命名为’Literacy percentage’。

df.rename(columns = {'Literacy %':'Literacy percentage'}, inplace=True)
print(df.head())
Rename

数据整理

数据科学涉及对数据进行处理,以便能够与数据算法很好地配合。数据整理是处理数据的过程,如合并、分组和连接。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)
Wrangling 1
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)
Wrangling 2

合并 (hé

现在,让我们使用merge()函数将我们创建的两个DataFrame按照’Employee_id’的值进行合并:

print(pd.merge(df1, df2, on='Employee_id'))
Merging

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'))
Grouping

c. 连接

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

print(pd.concat([df1, df2]))
Concatenation

通过传递一个系列字典创建一个数据框架。

创建一个Series,我们可以使用pd.Series()方法并将一个数组传递给它。让我们按照以下方式创建一个简单的Series:

series_sample = pd.Series([100, 200, 300, 400])
print(series_sample)
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)
Df Dictseries

列选择、添加、删除

可以从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'])
Col Selection
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)
Col Addition
del df['Matches played']

或者

df.pop('Matches played')
Delcolum

结论

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

bannerAds