> 文章列表 > Pandas 创建DataFrame

Pandas 创建DataFrame

Pandas 创建DataFrame

文章目录

    • 1. 创建空DataFrame
    • 2. 使用列表创建DataFrame
    • 3. 使用ndarrays/Lists的字典创建DataFrame
    • 4. 使用字典列表创建DataFrame
    • 5. 使用Series字典来创建DataFrame

Pandas 中 DataFrame是二维数据结构,它包含一组有序的列,每列可以是不同的数据类型,DataFrame既有行索引,也有列索引,它可以看作是Series组成的字典,不过这些Series共用一个索引。

pandas.DataFrame( data, index, columns, dtype, copy)

  • data:支持多种数据类型,如:ndarrayseriesmaplistsdictconstant和另一个DataFrame
  • index:行标签,如果没有传递索引值,默认值为np.arrange(n)
  • columns:列标签,如果没有传递索引值,默认值为np.arrange(n)
  • dtype:每列的数据类型。
  • copy:是否复制数据,默认值为False

1. 创建空DataFrame

import pandas as pd
df = pd.DataFrame()
print (df)'''
Empty DataFrame
Columns: []
Index: []
'''

2. 使用列表创建DataFrame

# 1. 从单个列表创建DataFrame
data = [1,2,3,4,5]
df = pd.DataFrame(data)
print (df)'''0
0  1
1  2
2  3
3  4
4  5
'''# 2. 从二维列表创建DataFrame
data = [['张三', 20],['李四', 21],['王五', 22]]
df = pd.DataFrame(data,columns=['Name','Age'])
print (df)'''Name  Age
0   张三   20
1   李四   21
2   王五   22
'''

3. 使用ndarrays/Lists的字典创建DataFrame

# 1. 使用函数range(n)的默认索引。
data = {'name':['张三', '李四', '王五', '赵四'],'age':[20, 21, 22, 23]}
df = pd.DataFrame(data)
print (df)'''name  age
0   张三   20
1   李四   21
2   王五   22
3   赵四   23
'''# 2. 使用列表作为索引,创建DataFrame
data = {'name':['张三', '李四', '王五', '赵四'],'age':[20, 21, 22, 23]}
df = pd.DataFrame(data, index=['rank1','rank2','rank3','rank4'])
print (df)'''name  age
rank1   张三   20
rank2   李四   21
rank3   王五   22
rank4   赵四   23
'''

所有的ndarrays/list必须具有相同的长度。如果传递了索引(index),则索引的长度应等于数组的长度。如果没有传递索引,则默认情况下,索引为range(n),其中n为数组长度。

4. 使用字典列表创建DataFrame

字典列表可作为输入数据用来创建数据帧(DataFrame),字典键默认为列名。

data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data)
print (df)'''a   b     c
0  1   2   NaN
1  5  10  20.0
'''

5. 使用Series字典来创建DataFrame

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print (df)'''one  two
a  1.0    1
b  2.0    2
c  3.0    3
d  NaN    4
'''
# 对于第一个Series,观察到没有包含索引'd',输出结果中,对应索引d区域,填写NaN。