Python Pandas.DataFrame详解

Python Pandas.DataFrame详解

Python Pandas.DataFrame详解

1. 简介

在数据分析和数据处理中,Pandas是一个非常重要的Python库。Pandas提供了高性能、易于使用的数据结构,尤其是DataFrame,它是Pandas库中最为重要的数据结构之一。DataFrame是一个二维表格结构,类似于电子表格或SQL表格,可以将数据组织成行和列的形式。

本文将详细介绍如何使用Pandas中的DataFrame,包括创建DataFrame、读取数据、数据清洗、数据操作等。

2. 创建DataFrame

2.1 从字典创建DataFrame

最常见的创建DataFrame的方法之一是使用字典。我们可以将字典的键作为列标签,将值作为列中的数据。

下面是一个示例代码:

import pandas as pd

data = {'姓名': ['小明', '小红', '小刚'],
        '年龄': [21, 23, 18],
        '成绩': [90, 95, 85]}

df = pd.DataFrame(data)
print(df)

运行结果:

   姓名  年龄  成绩
0  小明  21  90
1  小红  23  95
2  小刚  18  85

从代码中可以看出,我们将一个字典作为参数传递给pd.DataFrame()函数,然后创建了一个列为“姓名”、“年龄”、“成绩”的DataFrame。

2.2 从列表创建DataFrame

除了字典,我们还可以使用列表创建DataFrame。在列表中,每个元素都是一个字典,字典的键即为列标签,字典的值即为该列中的数据。

以下是一个示例代码:

import pandas as pd

data = [{'姓名': '小明', '年龄': 21, '成绩': 90},
        {'姓名': '小红', '年龄': 23, '成绩': 95},
        {'姓名': '小刚', '年龄': 18, '成绩': 85}]

df = pd.DataFrame(data)
print(df)

运行结果:

   姓名  年龄  成绩
0  小明  21  90
1  小红  23  95
2  小刚  18  85

从代码中可以看到,我们将一个包含字典的列表作为参数传递给pd.DataFrame()函数,然后创建了与上面相同的DataFrame。

2.3 从CSV文件创建DataFrame

通常情况下,我们从外部数据源获取数据。在实际应用中,最常见的数据格式之一是CSV文件。Pandas提供了方便的功能来读取CSV文件并创建DataFrame。

以下是一个示例代码:

import pandas as pd

df = pd.read_csv('data.csv')
print(df)

运行结果:

   姓名  年龄  成绩
0  小明  21  90
1  小红  23  95
2  小刚  18  85

在示例中,我们使用pd.read_csv()函数读取了名为”data.csv”的CSV文件,并将其转换为DataFrame对象。

3. 数据清洗

获得原始数据后,我们经常需要进行一些数据清洗的操作,以便更好地分析和处理数据。

3.1 查找缺失值

在数据中,缺失值是指数据表中的空值或NaN(Not a Number)的值。而NaN值是Pandas中用于表示缺失值的特殊值。

下面是一个示例代码,演示如何查找缺失值:

import pandas as pd
import numpy as np

data = {'姓名': ['小明', '小红', np.nan],
        '年龄': [21, 23, 18],
        '成绩': [90, np.nan, 85]}

df = pd.DataFrame(data)
print(df.isnull())

运行结果:

      姓名     年龄     成绩
0  False  False  False
1  False  False   True
2   True  False  False

代码中,我们使用isnull()函数返回一个布尔值的DataFrame,其中缺失的值为True,非缺失的值为False。

3.2 删除缺失值

一旦查找到缺失值,我们可以选择删除这些缺失值,以便更好地处理数据。

以下是一个示例代码,演示如何删除缺失值:

import pandas as pd
import numpy as np

data = {'姓名': ['小明', '小红', np.nan],
        '年龄': [21, 23, 18],
        '成绩': [90, np.nan, 85]}

df = pd.DataFrame(data)
df = df.dropna()
print(df)

运行结果:

   姓名  年龄  成绩
0  小明  21  90

在示例中,我们使用dropna()函数删除了包含缺失值的行。删除缺失值后,我们得到了一个不包含缺失值的DataFrame。

3.3 填充缺失值

除了删除缺失值之外,我们还可以选择用特定的值填充缺失值,以保留数据的完整性。

以下是一个示例代码,演示如何填充缺失值:

import pandas as pd
import numpy as np

data = {'姓名': ['小明', '小红', np.nan],
        '年龄': [21, 23, 18],
        '成绩': [90, np.nan, 85]}

df = pd.DataFrame(data)
df = df.fillna(0)
print(df)

运行结果:

   姓名  年龄    成绩
0  小明  21  90.0
1  小红  23   0.0
2   0  18  85.0

在示例中,我们使用fillna()函数将缺失值填充为0。填充缺失值后,我们得到了一个所有缺失值被填充的DataFrame。

4. 数据操作

在数据分析中,我们通常需要对数据进行各种操作和转换。Pandas提供了许多内置的功能来处理DataFrame,包括选择、过滤、排序和合并等。

以下将详细介绍一些常用的数据操作。

4.1 选择数据

我们可以使用Pandas中的lociloc属性来选择DataFrame中的数据。

以下是一个示例代码,演示如何选择数据:

import pandas as pd

data = {'姓名': ['小明', '小红', '小刚'],
        '年龄': [21, 23, 18],
        '成绩': [90, 95, 85]}

df = pd.DataFrame(data)

# 通过列标签选择列
print(df['姓名'])

# 通过行标签和列标签选择具体的数据
print(df.loc[0, '成绩'])

# 通过行索引选择行
print(df.iloc[0])

# 通过布尔索引选择满足条件的数据
print(df[df['年龄'] > 20])

运行结果:

0    小明
1    小红
2    小刚
Name: 姓名, dtype: object
90
姓名    小明
年龄    21
成绩    90
Name: 0, dtype: object
   姓名  年龄  成绩
0  小明  21  90
1  小红  23  95

在示例中,我们通过列标签选择了特定的列(’姓名’),通过行标签和列标签选择了特定的数据(第一行的’成绩’),通过行索引选择了特定的行(第一行),以及通过布尔索引选择了满足条件的数据(年龄大于20岁的行)。

4.2 过滤数据

除了选择数据,我们还可以使用条件来过滤数据。在Pandas中,我们可以使用布尔索引来实现数据的过滤。

以下是一个示例代码,演示如何过滤数据:

import pandas as pd

data = {'姓名': ['小明', '小红', '小刚'],
        '年龄': [21, 23, 18],
        '成绩': [90, 95, 85]}

df = pd.DataFrame(data)

# 使用布尔索引过滤数据
filtered_df = df[df['年龄'] > 20]
print(filtered_df)

运行结果:

   姓名  年龄  成绩
0  小明  21  90
1  小红  23  95

在示例中,我们使用布尔索引过滤了年龄大于20岁的行,并将结果赋值给了一个新的DataFrame对象。

4.3 排序数据

排序数据可以帮助我们更好地理解数据的分布和趋势。在Pandas中,我们可以使用sort_values()函数对DataFrame进行排序。

以下是一个示例代码,演示如何排序数据:

import pandas as pd

data = {'姓名': ['小明', '小红', '小刚'],
        '年龄': [21, 23, 18],
        '成绩': [90, 95, 85]}

df = pd.DataFrame(data)

# 按照年龄降序排序
sorted_df = df.sort_values(by='年龄', ascending=False)
print(sorted_df)

运行结果:

   姓名  年龄  成绩
1  小红  23  95
0  小明  21  90
2  小刚  18  85

在示例中,我们通过sort_values()函数根据年龄列的降序进行排序,并将结果赋值给了一个新的DataFrame对象。

4.4 合并数据

在实际应用中,我们常常需要将多个数据源的数据合并在一起进行分析。在Pandas中,我们可以使用merge()函数将多个DataFrame进行合并。

以下是一个示例代码,演示如何合并数据:

import pandas as pd

data1 = {'姓名': ['小明', '小红', '小刚'],
         '年龄': [21, 23, 18],
         '成绩': [90, 95, 85]}
data2 = {'姓名': ['小明', '小红', '小刚'],
         '性别': ['男', '女', '男']}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# 按照姓名进行合并
merged_df = pd.merge(df1, df2, on='姓名')
print(merged_df)

运行结果:

   姓名  年龄  成绩 性别
0  小明  21  90  男
1  小红  23  95  女
2  小刚  18  85  男

在示例中,我们通过merge()函数将两个DataFrame按照姓名进行合并,并将结果赋值给了一个新的DataFrame对象。

5. 结论

本文详细介绍了使用Pandas中的DataFrame来进行数据处理和分析的基本操作。通过创建DataFrame、数据清洗、数据操作等步骤,我们可以更加灵活和高效地处理数据。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程