📜  Python Pandas数据操作(1)

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

Python Pandas数据操作

Pandas是Python开发人员最常用的数据处理和分析库之一。它提供了类似于Excel的电子表格的结构来存储和处理数据,并提供了很多功能,如数据清洗、转换、分析和可视化。本文将介绍Pandas的数据操作中的一些重要功能。

1. Pandas数据结构

Pandas主要有两种数据结构:Series和DataFrame。

  • Series: 一种类似于数组的一维对象,由一组数据和一组索引组成。它是Pandas中最基本的数据结构。
import pandas as pd

# 创建Series
s = pd.Series([1, 3, 5, np.nan, 6, 8])
print(s)

# 打印结果:
# 0    1.0
# 1    3.0
# 2    5.0
# 3    NaN
# 4    6.0
# 5    8.0
# dtype: float64
  • DataFrame: 类似于一张电子表格,是由多个行和列组成的二维数据结构。每一列可以是不同的数据类型(整数、浮点数、字符串等)。
# 创建DataFrame
data = {
    'name': ['Tom', 'Jack', 'Steve', 'Ricky'],
    'age': [28, 34, 29, 42],
    'gender': ['M', 'M', 'M', 'F']
}
df = pd.DataFrame(data)
print(df)

# 打印结果:
#     name  age gender
# 0    Tom   28      M
# 1   Jack   34      M
# 2  Steve   29      M
# 3  Ricky   42      F
2. 数据的读取和写入

Pandas可以读取和写入多种数据格式,如CSV、Excel、JSON、SQL等。

  • 读取CSV文件
# 读取CSV文件并打印前5行数据
df = pd.read_csv('data.csv')
print(df.head())
  • 写入CSV文件
# 写入CSV文件
df.to_csv('data.csv')
3. 数据清洗与预处理

数据清洗是指将数据中的不合理部分进行修改、删除或填充,使得数据规范、可分析。而数据预处理包括数据归一化、标准化、缩放等,用于使得数据适用于机器学习算法。

  • 处理缺失值
# 创建DataFrame
data = {
    'name': ['Tom', 'Jack', 'Steve', 'Ricky'],
    'age': [28, np.nan, 29, np.nan],
    'gender': ['M', 'M', 'M', 'F']
}
df = pd.DataFrame(data)

# 是否有缺失值
print(df.isnull())

# 处理缺失值(直接删除)
df.dropna(inplace=True)
  • 去重
# 创建DataFrame
data = {
    'name': ['Tom', 'Jack', 'Tom', 'Ricky'],
    'age': [28, 34, 29, 42],
    'gender': ['M', 'M', 'M', 'F']
}
df = pd.DataFrame(data)

# 判断是否有重复行
print(df.duplicated())

# 去重
df.drop_duplicates(inplace=True)
  • 数据替换
# 创建DataFrame
data = {
    'name': ['Tom', 'Jack', 'Steve', 'Ricky'],
    'age': [28, 34, 29, 42],
    'gender': ['M', 'M', 'M', 'F']
}
df = pd.DataFrame(data)

# 数据替换
df.replace({'gender': 'M'}, {'gender': 'Male'}, inplace=True)
4. 数据索引和选择

Pandas提供了多种方式来索引和选择数据,包括位置索引、标签索引、切片、布尔索引等方式。

  • 位置索引
# 创建DataFrame
data = {
    'name': ['Tom', 'Jack', 'Steve', 'Ricky'],
    'age': [28, 34, 29, 42],
    'gender': ['M', 'M', 'M', 'F']
}
df = pd.DataFrame(data)

# 通过位置索引选择数据
print(df.iloc[1:3, :2])
  • 标签索引
# 创建DataFrame
data = {
    'name': ['Tom', 'Jack', 'Steve', 'Ricky'],
    'age': [28, 34, 29, 42],
    'gender': ['M', 'M', 'M', 'F']
}
df = pd.DataFrame(data)

# 通过标签索引选择数据
print(df.loc[1:3, ['name', 'age']])
  • 切片
# 创建DataFrame
data = {
    'name': ['Tom', 'Jack', 'Steve', 'Ricky'],
    'age': [28, 34, 29, 42],
    'gender': ['M', 'M', 'M', 'F']
}
df = pd.DataFrame(data)

# 使用切片选择数据
print(df[1:3])
  • 布尔索引
# 创建DataFrame
data = {
    'name': ['Tom', 'Jack', 'Steve', 'Ricky'],
    'age': [28, 34, 29, 42],
    'gender': ['M', 'M', 'M', 'F']
}
df = pd.DataFrame(data)

# 使用布尔索引选择数据
print(df[df.age > 30])
5. 数据分组和聚合

Pandas提供了groupby函数来进行数据分组和聚合操作。

  • 数据分组
# 创建DataFrame
data = {
    'name': ['Tom', 'Tom', 'Jack', 'Jack', 'Steve', 'Ricky'],
    'age': [28, 34, 29, 42, 29, 34],
    'gender': ['M', 'M', 'M', 'M', 'M', 'F']
}
df = pd.DataFrame(data)

# 按照name分组
grouped = df.groupby('name')

# 遍历分组
for name, group in grouped:
    print(name)
    print(group)
  • 数据聚合
# 创建DataFrame
data = {
    'name': ['Tom', 'Tom', 'Jack', 'Jack', 'Steve', 'Ricky'],
    'age': [28, 34, 29, 42, 29, 34],
    'gender': ['M', 'M', 'M', 'M', 'M', 'F']
}
df = pd.DataFrame(data)

# 按照name分组并进行聚合
grouped = df.groupby('name')
print(grouped.agg({'age': ['min', 'max', 'mean']}))
6. 数据排序和排名

Pandas提供了sort_values函数用于数据排序,rank函数用于数据排名。

  • 数据排序
# 创建DataFrame
data = {
    'name': ['Tom', 'Jack', 'Steve', 'Ricky'],
    'age': [28, 34, 29, 42],
    'gender': ['M', 'M', 'M', 'F']
}
df = pd.DataFrame(data)

# 按照age升序排列
print(df.sort_values('age', ascending=True))
  • 数据排名
# 创建DataFrame
data = {
    'name': ['Tom', 'Jack', 'Steve', 'Ricky'],
    'grade': [80, 90, 75, 90]
}
df = pd.DataFrame(data)

# 对grade进行排名
print(df.rank())
7. 数据统计和描述

Pandas提供了多种函数用于数据统计和描述,如mean、std、count、describe等。

# 创建DataFrame
data = {
    'name': ['Tom', 'Jack', 'Steve', 'Ricky'],
    'age': [28, 34, 29, 42],
    'gender': ['M', 'M', 'M', 'F']
}
df = pd.DataFrame(data)

# 数据统计和描述
print(df.mean())
print(df.std())
print(df.count())
print(df.describe())