📅  最后修改于: 2023-12-03 15:04:07.323000             🧑  作者: Mango
Pandas是Python开发人员最常用的数据处理和分析库之一。它提供了类似于Excel的电子表格的结构来存储和处理数据,并提供了很多功能,如数据清洗、转换、分析和可视化。本文将介绍Pandas的数据操作中的一些重要功能。
Pandas主要有两种数据结构:Series和DataFrame。
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
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
Pandas可以读取和写入多种数据格式,如CSV、Excel、JSON、SQL等。
# 读取CSV文件并打印前5行数据
df = pd.read_csv('data.csv')
print(df.head())
# 写入CSV文件
df.to_csv('data.csv')
数据清洗是指将数据中的不合理部分进行修改、删除或填充,使得数据规范、可分析。而数据预处理包括数据归一化、标准化、缩放等,用于使得数据适用于机器学习算法。
# 创建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)
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])
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']}))
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())
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())