Python Pandas基础操作详解

  • Post category:Python

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方法按姓名将两个数据集合并起来,并输出结果。