Pandas 创建DataFrame

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

数据帧(DataFrame)的功能特点:

  • 不同的列可以是不同的数据类型
  • 大小可变
  • 含行索引和列索引
  • 可以对行和列执行算术运算

假设要创建一个包含学生信息的DataFrame,如下图所示:
Pandas 创建DataFrame

DataFrame 结构体

pandas中的DataFrame可以使用以下构造函数创建:

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

构造函数的参数说明如下:

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

Pandas数据帧(DataFrame)支持多种输入类型来创建

  • 列表(list)
  • 字典(dict)
  • 系列(series)
  • Numpy ndarrays
  • 其他数据帧(DataFrame)

下面介绍如何创建数据帧(DataFrame)。

创建一个空的 DataFrame

#import the pandas library and aliasing as pd
import pandas as pd
df = pd.DataFrame()
print (df)

执行结果如下:

Empty DataFrame
Columns: []
Index: []

从列表创建 DataFrame

可以使用单个列表或二维列表创建数据帧(DataFrame)。

例1:单个列表创建DataFrame

import pandas as pd
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

import pandas as pd
data = [['Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'])
print (df)

执行结果如下:

     Name  Age
0    Alex   10
1     Bob   12
2  Clarke   13

例3:二维列表创建DataFrame,并指定dtype

import pandas as pd
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

注: 可以观察到,dtype参数将Age列的类型更改为浮点。

从 ndarrays/Lists 的字典来创建 DataFrame

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

import pandas as pd
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df = pd.DataFrame(data)
print (df)

执行结果如下:

   Age   Name
0   28    Tom
1   34   Jack
2   29  Steve
3   42  Ricky

注:观察值0,1,2,3,它们是分配给每个使用函数range(n)的默认索引。

使用列表作为索引,创建一个数据帧(DataFrame)。

import pandas as pd
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df = pd.DataFrame(data, index=['rank1','rank2','rank3','rank4'])
print (df)

执行结果如下:

       Age   Name
rank1   28    Tom
rank2   34   Jack
rank3   29  Steve
rank4   42  Ricky

注:index参数为每行分配一个索引。

从字典列表创建 DataFrame

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

例1:传递字典列表来创建数据帧(DataFrame)。

import pandas as pd
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

注:观察到,使用NaN填写空白区域

例2:传递字典列表和行索引来创建数据帧(DataFrame)。

import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data, index=['first', 'second'])
print (df)

执行结果如下:

        a   b     c
first   1   2   NaN
second  5  10  20.0

例3:以下示例显示如何使用字典,行索引和列索引列表创建数据帧(DataFrame)。

import pandas as pd
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'])

#With two column indices with one index with other name
df2 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b1'])
print (df1)
print (df2)

执行结果如下:

        a   b
first   1   2
second  5  10
        a  b1
first   1 NaN
second  5 NaN

注:df1是使用列索引创建的,与字典键相同
df2使用字典键以外的列索引创建DataFrame,使用NaN填写空白区域

从 Series 字典来创建 DataFrame

通过传递 Series 字典来创建DataFrame,最终索引是两个Series索引的并集。

import pandas as pd

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。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程