Pandas 是 Python 的一个数据分析包,最初由 AQR Capital Management 于2008年4月开发,并于2009年底开源出来,目前由专注于 Python 数据包开发的 PyData 开发团队继续开发和维护,属于 PyData 项目的一部分。
Pandas 最初被作为金融数据分析工具而开发出来,因此,pandas为时间序列分析提供了很好的支持。
Pandas 的名称来自于面板数据(panel data)和 Python数据分析(data analysis)。
在深度学习中 Pandas 的使用也非常多!
Pandas 数据框架的创建方式
一、创建一个空的数据框架
import pandas as pd
df = pd.DataFrame()
print(df)
运行结果:
Empty DataFrame
Columns: []
Index: []
二、从列表进行创建
- 一维列表
data = [1,2,3,4,5]
df = pd.DataFrame(data) # 将列表数据转化为 一列
print(df)
运行结果:
0
0 1
1 2
2 3
3 4
4 5
- 二维列表
data = [['Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age']) # 将第一维度数据转为为行,第二维度数据转化为列,即 3 行 2 列,并设置列标签
print(df)
运行结果:
Name Age
0 Alex 10
1 Bob 12
2 Clarke 13
- 设置数据格式
data = [['Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'],dtype=float) # 将数字元素 自动转化为 浮点数
print(df)
运行结果:
Name Age
0 Alex 10.0
1 Bob 12.0
2 Clarke 13.0
三、从 ndarrays / Lists 的 字典创建
- 默认的 index
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]} # 两组列元素,并且个数需要相同
df = pd.DataFrame(data) # 这里默认的 index 就是 range(n),n 是列表的长度
print(df)
运行结果:
Name Age
0 Tom 28
1 Jack 34
2 Steve 29
3 Ricky 42
- 指定 index
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df = pd.DataFrame(data, index=['rank1','rank2','rank3','rank4']) # 这里设定了 index 个数要和列表长度一致
print(df)
运行结果:
Name Age
rank1 Tom 28
rank2 Jack 34
rank3 Steve 29
rank4 Ricky 42
四、从 字典组成的列表 创建
- 自动添加 NaN
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}] # 列表对应的是第一维,即行,字典为同一行不同列元素
df = pd.DataFrame(data) # 第 1 行 3 列没有元素,自动添加 NaN (Not a Number)
print(df)
运行结果:
a b c
0 1 2 NaN
1 5 10 20.0
- 取特定的表头下的列元素
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
#With two column indices, values same as dictionary keys
df1 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b']) # 指定表头都存在于 data,只取部分
#With two column indices with one index with other name
df2 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b1']) # 指定表头中 b1 不存在,添加 b1 列,元素 NaN
print(df1)
print(df2)
运行结果:
a b
first 1 2
second 5 10
a b1
first 1 NaN
second 5 NaN
五、从 Series 组成的字典 创建
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
# index 与序列长度相投
# 字典不同的 key 代表一个列的表头,pd.Series 作为 value 作为该列的元素
df = pd.DataFrame(d)
print(df)
运行结果:
one two
a 1.0 1
b 2.0 2
c 3.0 3
d NaN 4