您的位置:首页 > 理论基础 > 数据结构算法

Python Pandas常用数据结构Series和DataFrame的相关操作

2017-09-09 19:29 1046 查看
Pandas是基于Numpy构建的,包含多种高级数据结构和工具的数据分析包。Pandas中常用的数据结构有Series和DataFrame。其中Series是一维数组,DataFrame是二维的表格型数据结构。可以认为DataFrame是多个Series的集合。

1. 定义

1.1 Series定义

先从Series的操作说起,首先是定义,可以通过列表来生成Series。每个Series都包含value值和index索引。不指定index时,系统默认索引为从0开始的自然数序列。

import pandas as pd
s = pd.Series([1,2,3],index =['a','b','c'])


结果:

>>> s
a    1
b    2
c    3
dtype: int64


1.2 DataFrame的定义

DataFrame的定义包含两种方式

(1) 由字典定义;

(2) 由Series定义的DataFrame会沿用Series的索引,行号等属性

# 由字典定义
data = {'a': [1, 2, 3],
'b': [2, 3, 4],
'c': [3, 4, 5]}
df = pd.DataFrame(data, index=['row1', 'row2', 'row3'])
# 由Series定义
df2 = pd.DataFrame([s,s],index=['row1', 'row2'])


结果:

>>> df
a  b  c
row1  1  2  3
row2  2  3  4
row3  3  4  5
>>> df2
a  b  c
row1  1  2  3
row2  1  2  3


2.DataFrame的操作

我个人使用DataFrame数据结构比较多,对此作了一个总结。

对pandas提供的DataFrame数据结构进行操作,总让我有一种在使用Matlab的感觉,简单方便,可以通过切片,获取到任意想获取的片段。

2.1 数据切片操作

以1.2 DataFrame定义中的 df 为例,行列编号均从0开始。

df['a']                # 获取列名为‘a’的列,取出来类型为Series
df.ix['row1']          # 获取索引为‘row1’的行,取出来为Series
df.iloc[1,1]           # 获取行列号为(1,1)的元素
df.iloc[0:2, 1]        # 获取第0~1行,第1列的元素
df[df.a > 1][df.b > 3] # 获取df的‘a’列大于1且‘b’列大于3的元素


结果:

*********df['a']取列'a'*************
row1    1
row2    2
row3    3
Name: a, dtype: int64
*******df.ix['row1']取行'row1'******
a    1
b    2
c    3
Name: row1, dtype: int64
*********df.iloc[1, 1]*************
3
*********df.iloc[0:2, 1]***********
row1    2
row2    3
Name: b, dtype: int64
*******df[df.a > 1][df.b > 3]******
a  b  c
row3  3  4  5


2.2 增加新列

可以通过多种方式为df增加新列

df['NewColumn'] = [1,2,3]
df['Num']= 1  #增加‘Num’列,值全为1
df['NullColumn'] = pd.Series('',index = df.index) #定义列,赋空值


增加新列后的df:

a  b  c  NewColumn  Num NullColumn
row1  1  2  3          1    1
row2  2  3  4          2    1
row3  3  4  5          3    1


后续接着整理一下数据处理中的空值处理、DataFrame的合并和轴向连接等等操作。

再然后就开始机器学习sklearn的学习啦!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python pandas