Pandas数据结构(二)——Pandas DataFrame

上回简单介绍了Pandas Series,我们了解到Series对象是一维标签(索引)数组,能够保存不同的数据类型,比如整型,浮点型,字符串或其他Python对象类型。

这次要介绍的是Pandas的另一种数据结构——Pandas DataFrame。DataFrame是一个二维标签的数组对象,和Series一样,DataFrame能接受不同类型的数据输入。

DataFrame包含行索引和列索引,你可以将它简单理解为类似于数据库表的结构,或者是包含字典类型的Series。

 

一、创建DataFrame对象

创建DataFrame对象的方式很多,主要有以下几种:

1.由包含ndarray或列表的字典构造

ndarray或列表的长度必须一致,相应地,传递的索引长度也必须与数组的长度相同。

import pandas as pd

data = {'a':[1, 2, 3, 4],
        'b': [5, 6, 7, 8],
        'c': [9, 10, 11, 12]}
pd.DataFrame(data)

运行结果:

 添加索引:

df=pd.DataFrame(data, index=['one', 'two', 'three', 'four'])
df

运行结果:

 还可以通过访问index和columns属性来访问行列标签:

df.index

df.columns

2.由包含Series的字典或嵌套字典构造

data1 = {'a': pd.Series([1, 2, 3]),
         'b': pd.Series([1, 2, 3, 4]),
         'c': pd.Series([1, 2, 3, 4, 5])}
pd.DataFrame(data1)

运行结果:

 注意:NaN代表缺失的数据。

添加索引:

data1 = {'a': pd.Series([1, 2, 3], index=['one', 'two', 'three']),
         'b': pd.Series([1, 2, 3, 4], index=['one', 'two', 'three', 'four']),
         'c': pd.Series([1, 2, 3, 4, 5], index=['one', 'two', 'three', 'four', 'five'])}
pd.DataFrame(data1)

运行结果:

pd.DataFrame(data1, index=['five', 'four', 'three'])

pd.DataFrame(data1, index=['five', 'four', 'three'], columns=['b', 'c', 'd'])

3.由包含字典的列表构造

data2 = [{'a': 1, 'b': 2, 'c': 3}, 
         {'a': 4, 'b': 5, 'c': 6},
         {'a': 7, 'b': 8, 'c': 9, 'd': 10}]
pd.DataFrame(data2)

运行结果:

pd.DataFrame(data2, index=['one', 'two', 'three'], columns=['a', 'b', 'd'])

除了上面几种创建DataFrame对象的方法,还可以使用数组、元组等方式构造,方法比较类似,这里不作赘述。

二、对DataFrame对象的列的操作

类似于字典操作,对一个DataFrame对象可以进行获取列的值、对列赋值或删除列的操作。

我们以上述df为例,对该对象的列进行操作。

# 获取Name为a的列的值
df['a']

# 获取Name为a的列的值并对值进行计算
df['a']*3-2

# 对列值进行计算
df['d'] = df['a'] + df['b']
df['TF'] = df['d'] > 9
df

 

# 删除列
del df['TF']
df

# 取出列
pt = df.pop('d')
df

# 被取出的列
pt

# 当插入一个标量值时,它会自动填满整列
df['True'] = 'T'
df

原文地址:https://www.cnblogs.com/BIXIABUMO/p/12391493.html