Python Pandas 基础操作详解
简介
Pandas是Python的一个数据处理库,提供了高效便捷的数据结构与相关操作,可以用于数据清洗、数据分析、数据可视化等多个方面。
在此基础上,本文将介绍Pandas的基础操作,包括如何创建、读取、索引、筛选、修改和删除数据,以及如何进行数据的合并、分组、排序和统计。
安装与引入
Pandas可以通过以下命令进行安装:
pip install pandas
在使用前,需要先引入Pandas库:
import pandas as pd
创建数据
Pandas的常用数据结构有Series和DataFrame两种。
创建Series
s = pd.Series([1, 3, 7, 5])
print(s)
输出:
0 1
1 3
2 7
3 5
dtype: int64
创建DataFrame
data = {
'name': ['Jack', 'John', 'Mary', 'Kate'],
'age': [23, 28, 21, 25],
'gender': ['M', 'M', 'F', 'F']
}
df = pd.DataFrame(data)
print(df)
输出:
name age gender
0 Jack 23 M
1 John 28 M
2 Mary 21 F
3 Kate 25 F
读取数据
Pandas支持多种数据文件的读取,包括csv、excel、json等格式。
以下示例为读取csv文件:
df = pd.read_csv('data.csv')
print(df)
索引与筛选数据
Pandas提供了多种索引和筛选数据的方式,包括使用位置索引、标签索引、布尔索引等。
位置索引
可以使用iloc方法通过位置索引获取数据:
df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
print(df.iloc[1])
输出:
a 2
b 5
Name: 1, dtype: int64
标签索引
可以使用loc方法通过标签索引获取数据:
df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]}, index=['x', 'y', 'z'])
print(df.loc['y'])
输出:
a 2
b 5
Name: y, dtype: int64
布尔索引
可以使用布尔表达式进行筛选:
df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
print(df[df['a'] > 1])
输出:
a b
1 2 5
2 3 6
修改数据
可以使用loc或iloc方法进行数据的修改:
df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
df.iloc[0] = [7, 8]
print(df)
输出:
a b
0 7 8
1 2 5
2 3 6
删除数据
Pandas支持多种删除数据的方式,包括按索引删除、按标签删除等。
以下示例为按索引删除:
df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]}, index=['x', 'y', 'z'])
df.drop('y', inplace=True)
print(df)
输出:
a b
x 1 4
z 3 6
数据合并
可以使用merge方法将多个数据合并:
df1 = pd.DataFrame({'name': ['Jack', 'John'], 'age': [23, 28]})
df2 = pd.DataFrame({'name': ['Mary', 'Kate'], 'sex': ['F', 'F']})
df = pd.merge(df1, df2, on='name')
print(df)
输出:
name age sex
0 Mary 21 F
1 Kate 25 F
数据分组
可以使用groupby方法进行数据分组:
df = pd.DataFrame({'name': ['Jack', 'John', 'Mary', 'Kate'], 'age': [23, 28, 21, 25], 'gender': ['M', 'M', 'F', 'F']})
grouped = df.groupby('gender')
print(grouped.mean())
输出:
age
gender
F 23.0
M 25.5
数据排序
可以使用sort_values方法进行数据排序:
df = pd.DataFrame({'name': ['Jack', 'John', 'Mary', 'Kate'], 'age': [23, 28, 21, 25]})
print(df.sort_values('age'))
输出:
name age
2 Mary 21
0 Jack 23
3 Kate 25
1 John 28
数据统计
可以使用describe方法进行数据统计:
df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]})
print(df.describe())
输出:
a b c
count 3.000000 3.000000 3.0
mean 2.000000 5.000000 8.0
std 1.000000 1.000000 1.0
min 1.000000 4.000000 7.0
25% 1.500000 4.500000 7.5
50% 2.000000 5.000000 8.0
75% 2.500000 5.500000 8.5
max 3.000000 6.000000 9.0
示例说明
示例一
data = {
'name': ['Jack', 'John', 'Mary', 'Kate'],
'age': [23, 28, 21, 25],
'gender': ['M', 'M', 'F', 'F']
}
df = pd.DataFrame(data)
print(df[df['age'] > 23])
输出:
name age gender
1 John 28 M
3 Kate 25 F
以上示例创建了一个包含姓名、年龄和性别的数据集,然后使用布尔索引获取年龄大于23岁的数据。
示例二
df1 = pd.DataFrame({'name': ['Jack', 'John'], 'age': [23, 28]})
df2 = pd.DataFrame({'name': ['Mary', 'Kate'], 'sex': ['F', 'F']})
df = pd.merge(df1, df2, on='name')
print(df)
输出:
name age sex
0 Mary 21 F
1 Kate 25 F
以上示例创建了两个包含姓名和年龄、姓名和性别的数据集,然后使用merge方法按姓名将两个数据集合并起来,并输出结果。