Python Pandas学习之Pandas数据结构详解

  • Post category:Python

Python Pandas学习之Pandas数据结构详解

简介

Pandas是Python中用于数据处理和数据分析的库,提供了类似于SQL的数据操作语法和一些常见的统计函数。在Pandas中,有三种常见的数据结构:Series、DataFrame和Panel。

Series

Series是一种由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签组成的一维数组结构。简单来说,Series就是一个带标签的数组。

创建Series

创建Series的方式有很多,常见的有以下三种:

1. 从列表中创建

import pandas as pd

data = [1, 2, 3, 4, 5]
s = pd.Series(data, index=['a', 'b', 'c', 'd', 'e'])
print(s)

输出结果为:

a    1
b    2
c    3
d    4
e    5
dtype: int64

2. 从字典中创建

import pandas as pd

data = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5}
s = pd.Series(data)
print(s)

输出结果为:

a    1
b    2
c    3
d    4
e    5
dtype: int64

3. 从NumPy数组中创建

import numpy as np
import pandas as pd

data = np.array([1, 2, 3, 4, 5])
s = pd.Series(data, index=['a', 'b', 'c', 'd', 'e'])
print(s)

输出结果为:

a    1
b    2
c    3
d    4
e    5
dtype: int64

访问Series

访问Series中的数据可以使用索引或标签,示例代码如下:

import pandas as pd

data = [1, 2, 3, 4, 5]
s = pd.Series(data, index=['a', 'b', 'c', 'd', 'e'])

# 索引
print(s[0])        # 1

# 标签
print(s['a'])      # 1

Series常见操作

Series支持很多常见的操作,例如切片、加法、乘法和计算平均值等。

import pandas as pd

data = [1, 2, 3, 4, 5]
s = pd.Series(data, index=['a', 'b', 'c', 'd', 'e'])

# 切片
print(s[:3])

# 加法
s1 = pd.Series([1, 2, 3, 4, 5])
s2 = pd.Series([10, 20, 30, 40, 50])
print(s1 + s2)

# 乘法
s1 = pd.Series([1, 2, 3, 4, 5])
s2 = pd.Series([10, 20, 30, 40, 50])
print(s1 * s2)

# 计算平均值
print(s.mean())

DataFrame

DataFrame是一种二维数据结构,通过行和列来表达数据。类似于电子表格或者SQL表格。

创建DataFrame

创建DataFrame的方式有很多,常见的有以下三种:

1. 从字典中创建

import pandas as pd

data = {'name':['Alice', 'Bob', 'Charlie', 'David'], 'grade':[85, 90, 95, 100]}
df = pd.DataFrame(data)
print(df)

输出结果为:

       name  grade
0     Alice     85
1       Bob     90
2   Charlie     95
3     David    100

2. 从列表中创建

import pandas as pd

data = [['Alice', 85], ['Bob', 90], ['Charlie', 95], ['David', 100]]
df = pd.DataFrame(data, columns=['name', 'grade'])
print(df)

输出结果为:

       name  grade
0     Alice     85
1       Bob     90
2   Charlie     95
3     David    100

3. 从CSV文件中读取

import pandas as pd

df = pd.read_csv('data.csv')
print(df)

访问DataFrame

访问DataFrame中的数据可以使用列名、行索引或位置索引,示例代码如下:

import pandas as pd

data = {'name':['Alice', 'Bob', 'Charlie', 'David'], 'grade':[85, 90, 95, 100]}
df = pd.DataFrame(data)

# 列名
print(df['name'])

# 行索引
print(df.loc[1])

# 位置索引
print(df.iloc[1])

DataFrame常见操作

DataFrame支持很多常见的操作,例如切片、合并、分组和排序等。

import pandas as pd

# 切片
data = {'name':['Alice', 'Bob', 'Charlie', 'David'], 'grade':[85, 90, 95, 100]}
df = pd.DataFrame(data)
print(df[:3])

# 合并
data1 = {'name':['Alice', 'Bob'], 'age':[20, 30]}
data2 = {'name':['Charlie', 'David'], 'age':[25, 35]}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
print(pd.concat([df1, df2]))

# 分组
data = {'name':['Alice', 'Bob', 'Charlie', 'David'], 'grade':[85, 90, 95, 100]}
df = pd.DataFrame(data)
grouped = df.groupby('grade').size()
print(grouped)

# 排序
data = {'name':['Alice', 'Bob', 'Charlie', 'David'], 'grade':[85, 90, 95, 100]}
df = pd.DataFrame(data)
df = df.sort_values(['grade'], ascending=False)
print(df)

示例说明

以下是两个利用DataFrame和Series处理数据的简单示例:

  1. 读取一个CSV文件,求每一列的平均值、方差和最大值
import pandas as pd

df = pd.read_csv('data.csv')
for col in df.columns:
    print(col + ':')
    print('    Mean:', df[col].mean())
    print('    Var:', df[col].var())
    print('    Max:', df[col].max())
  1. 统计每个州的人口数量和面积,并计算人口密度
import pandas as pd

df = pd.read_csv('data.csv', index_col='州')
df['人口密度'] = df['人口'] / df['面积']
print(df)

以上两个示例仅是Pandas常用操作的冰山一角,Pandas还有很多非常强大的功能,可以用来处理更多的数据分析任务。