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处理数据的简单示例:
- 读取一个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())
- 统计每个州的人口数量和面积,并计算人口密度
import pandas as pd
df = pd.read_csv('data.csv', index_col='州')
df['人口密度'] = df['人口'] / df['面积']
print(df)
以上两个示例仅是Pandas常用操作的冰山一角,Pandas还有很多非常强大的功能,可以用来处理更多的数据分析任务。