📜  pandas 示例行 - Python (1)

📅  最后修改于: 2023-12-03 15:03:30.679000             🧑  作者: Mango

pandas 示例行 - Python

Pandas是一个用于数据操作和数据分析的Python库,在数据科学领域很受欢迎。 它提供了高性能、易于使用和灵活的数据结构,如DataFrame和Series,使得数据的导入、清洗、处理和分析变得非常容易。

在本文中,我们将演示一些基本的Pandas示例,如何使用Pandas组织、分析和可视化数据。

安装Pandas

要使用Pandas,首先需要安装它。 可以通过运行以下命令在命令行中安装Pandas:

!pip install pandas
导入Pandas

在开始使用Pandas之前,需要导入它。 可以使用以下命令导入Pandas:

import pandas as pd
创建DataFrame

创建DataFrame是使用Pandas进行数据分析的第一步。 DataFrame是一种二维表格数据结构,其中的行和列都包含标签,类似于电子表格或SQL表格。

以下是一个示例DataFrame:

import pandas as pd

data = {'name': ['John', 'Anna', 'Peter', 'Linda'],
        'age': [32, 26, 45, 33],
        'gender': ['M', 'F', 'M', 'F']}
df = pd.DataFrame(data)
print(df)

输出:

    name  age gender
0   John   32      M
1   Anna   26      F
2  Peter   45      M
3  Linda   33      F

这里创建了一个DataFrame,其中包含姓名、年龄和性别三列,并分别填充了四个值。

选择DataFrame数据

选择DataFrame数据的最基本方法是使用列标签作为关键字。 例如,要选择“name”列,可以使用以下代码:

import pandas as pd

data = {'name': ['John', 'Anna', 'Peter', 'Linda'],
        'age': [32, 26, 45, 33],
        'gender': ['M', 'F', 'M', 'F']}
df = pd.DataFrame(data)

print(df['name'])

输出:

0     John
1     Anna
2    Peter
3    Linda
Name: name, dtype: object

可以用同样的方式选择多列:

print(df[['name', 'age']])

输出:

    name  age
0   John   32
1   Anna   26
2  Peter   45
3  Linda   33

要选择 DataFrame 指定的行,可以使用切片或 Pandas 的 .loc 与 .iloc 方法,这类似于 Python 列表中的取值操作:

# 选择前两行
print(df[:2])

# 选择行索引为0、2的行
print(df.loc[[0, 2]])

# 选择前两行和前两列
print(df.iloc[:2, :2])

输出:

    name  age gender
0   John   32      M
1   Anna   26      F
     name  age gender
0    John   32      M
2   Peter   45      M
    name  age
0   John   32
1   Anna   26
过滤DataFrame数据

过滤DataFrame可以用条件语句实现。 例如,要选择age大于30的人,可以使用以下代码:

import pandas as pd

data = {'name': ['John', 'Anna', 'Peter', 'Linda'],
        'age': [32, 26, 45, 33],
        'gender': ['M', 'F', 'M', 'F']}
df = pd.DataFrame(data)

print(df[df['age'] > 30])

输出:

    name  age gender
0   John   32      M
2  Peter   45      M
3  Linda   33      F

还可以对列进行过滤,例如选择性别为男性(M)的行:

print(df[df['gender'] == 'M'])

输出:

    name  age gender
0   John   32      M
2  Peter   45      M

除此之外,还可以使用多个条件进行过滤,并使用逻辑与(&)和逻辑或(|)进行组合:

# 选择性别为女性(F),且年龄在30到40之间的行
print(df[(df['gender'] == 'F') & (df['age'] >= 30) & (df['age'] <= 40)])

# 选择性别为女性(F),或年龄在30到40之间的行
print(df[(df['gender'] == 'F') | ((df['age'] >= 30) & (df['age'] <= 40))])
对DataFrame进行排序

要对DataFrame进行排序,可以使用 sort_values() 方法,它可以按照一个或多个列进行排序。例如,以下代码按照年龄进行升序排序:

import pandas as pd

data = {'name': ['John', 'Anna', 'Peter', 'Linda'],
        'age': [32, 26, 45, 33],
        'gender': ['M', 'F', 'M', 'F']}
df = pd.DataFrame(data)

print(df.sort_values(by=['age']))

输出:

    name  age gender
1   Anna   26      F
0   John   32      M
3  Linda   33      F
2  Peter   45      M
分组和统计

Pandas 还提供了一个功能强大的分组和统计功能,可以轻松地计算 DataFrame 中每个组的汇总信息。 例如,以下代码按性别分组,并获取每个组的年龄平均值:

import pandas as pd

data = {'name': ['John', 'Anna', 'Peter', 'Linda'],
        'age': [32, 26, 45, 33],
        'gender': ['M', 'F', 'M', 'F']}
df = pd.DataFrame(data)

print(df.groupby(['gender'])['age'].mean())

输出:

gender
F    29.5
M    38.5
Name: age, dtype: float64
DataFrame操作和处理数据

除了上述常见Pandas操作之外,还可以执行其他DataFrame操作和处理数据,例如删除行或列、合并多个DataFrame、处理缺失值、数据类型转换等。

在行和列之间进行选择和删除通常是一项常见任务。 例如,以下代码选择除“name”列以外的所有列:

import pandas as pd

data = {'name': ['John', 'Anna', 'Peter', 'Linda'],
        'age': [32, 26, 45, 33],
        'gender': ['M', 'F', 'M', 'F']}
df = pd.DataFrame(data)

# Drop column
df.drop(columns=['name'], inplace=True)
print(df)

输出:

   age gender
0   32      M
1   26      F
2   45      M
3   33      F

还可以从DataFrame中删除行:

import pandas as pd

data = {'name': ['John', 'Anna', 'Peter', 'Linda'],
        'age': [32, 26, 45, 33],
        'gender': ['M', 'F', 'M', 'F']}
df = pd.DataFrame(data)

# Drop row
df.drop([1, 3], inplace=True)
print(df)

输出:

    name  age gender
0   John   32      M
2  Peter   45      M

在 DataFrame 中合并数据通常称为连接操作。 Pandas 支持多种类型的连接,包括内部连接、左连接、右连接和外部连接等。

以下是一个例子,它展示了如何通过合并两个 DataFrame 实现左连接:

import pandas as pd

data = {'id': [1, 2, 3, 4],
        'name': ['John', 'Anna', 'Peter', 'Linda']}
df1 = pd.DataFrame(data)

data = {'id': [1, 2, 5],
        'age': [32, 26, 45]}
df2 = pd.DataFrame(data)

merged = pd.merge(df1, df2, on='id', how='left')
print(merged)

输出:

   id   name   age
0   1   John  32.0
1   2   Anna  26.0
2   3  Peter   NaN
3   4  Linda   NaN

出现NaN表示没有在df2中找到id为3和4的记录。

处理丢失值通常意味着识别、删除或替换 DataFrame 中的 NaN 值。 例如,以下代码将替换NaN值为0:

import pandas as pd
import numpy as np

data = {'id': [1, 2, 3, 4],
        'name': ['John', 'Anna', 'Peter', 'Linda'],
        'age': [32, np.nan, 45, np.nan]}
df = pd.DataFrame(data)

df.fillna(0, inplace=True)
print(df)

输出:

   id   name   age
0   1   John  32.0
1   2   Anna   0.0
2   3  Peter  45.0
3   4  Linda   0.0

还可以使用 Pandas 将 DataFrame 中的数据类型转换。 例如,以下代码将 age 列的数据类型从 float 转换成 int:

import pandas as pd

data = {'id': [1, 2, 3, 4],
        'name': ['John', 'Anna', 'Peter', 'Linda'],
        'age': [32.0, 26.0, 45.0, 33.0]}
df = pd.DataFrame(data)

df['age'] = df['age'].astype(int)
print(df.dtypes)

输出:

id       int64
name    object
age      int64
dtype: object
结论

以上是一些使用Pandas进行数据分析的基本示例。Pandas是一个功能强大、易于使用的Python库。 它可以帮助程序员组织、清洗、处理和分析数据。 Pandas 提供了大量的示例和操作,可满足各式各样的数据处理需求。