pandas 学习(2): pandas 数据结构之DataFrame

  DataFrame 类型类似于数据库表结构的数据结构,其含有行索引和列索引,可以将DataFrame 想成是由相同索引的Series组成的Dict类型。在其底层是通过二维以及一维的数据块实现。

1.  DataFrame 对象的构建

  1.1 用包含等长的列表或者是NumPy数组的字典创建DataFrame对象

In [68]: import pandas as pd

In [69]: from pandas import Series,DataFrame
# 建立包含等长列表的字典类型
In [70]:  data = {‘state‘: [‘Ohio‘, ‘Ohio‘, ‘Ohio‘, ‘Nevada‘, ‘Nevada‘],‘year‘: [2000, 2001, 20
    ...: 02, 2001, 2002],‘pop‘: [1.5, 1.7, 3.6, 2.4, 2.9]}
In [71]: data
Out[71]:
{‘pop‘: [1.5, 1.7, 3.6, 2.4, 2.9],
 ‘state‘: [‘Ohio‘, ‘Ohio‘, ‘Ohio‘, ‘Nevada‘, ‘Nevada‘],
 ‘year‘: [2000, 2001, 2002, 2001, 2002]}
# 建立DataFrame对象
In [72]: frame1 = DataFrame(data)
# 红色部分为自动生成的索引
In [73]: frame1
Out[73]:
   pop   state  year
0  1.5    Ohio  2000
1  1.7    Ohio  2001
2  3.6    Ohio  2002
3  2.4  Nevada  2001
4  2.9  Nevada  2002

  在建立过程中可以指点列的顺序:

In [74]: frame1 = DataFrame(data,columns=[‘year‘, ‘state‘, ‘pop‘])

In [75]: frame1
Out[75]:
   year   state  pop
0  2000    Ohio  1.5
1  2001    Ohio  1.7
2  2002    Ohio  3.6
3  2001  Nevada  2.4
4  2002  Nevada  2.9

  和Series一样,DataFrame也是可以指定索引内容:

In [76]: ind = [‘one‘, ‘two‘, ‘three‘, ‘four‘, ‘five‘]
In [77]: frame1 = DataFrame(data,index = ind)

In [78]: frame1
Out[78]:
       pop   state  year
one    1.5    Ohio  2000
two    1.7    Ohio  2001
three  3.6    Ohio  2002
four   2.4  Nevada  2001
five   2.9  Nevada  2002

  1.2.  用由字典类型组成的嵌套字典类型来生成DataFrame对象

  当由嵌套的字典类型生成DataFrame的时候,外部的字典索引会成为列名,内部的字典索引会成为行名。生成的DataFrame会根据行索引排序

In [84]: pop = {‘Nevada‘: {2001: 2.4, 2002: 2.9},‘Ohio‘: {2000: 1.5, 2001: 1.7, 2002: 3.6}}

In [85]: frame3 = DataFrame(pop)

In [86]: frame3
Out[86]:
      Nevada  Ohio
2000     NaN   1.5
2001     2.4   1.7
2002     2.9   3.6

  除了使用默认的按照行索引排序之外,还可以指定行序列:

In [95]: frame3 = DataFrame(pop,[2002,2001,2000])

In [96]: frame3
Out[96]:
      Nevada  Ohio
2002     2.9   3.6
2001     2.4   1.7
2000     NaN   1.5

  1.3 其它构造方法:

  

2.  DataFrame 内容访问

  从DataFrame中获取一列的结果为一个Series,可以通过以下两种方式获取:

# 以字典索引方式获取In [100]: frame1["state"]
Out[100]:
one        Ohio
two        Ohio
three      Ohio
four     Nevada
five     Nevada
Name: state, dtype: object
# 以属性方式获取
In [101]: frame1.state
Out[101]:
one        Ohio
two        Ohio
three      Ohio
four     Nevada
five     Nevada
Name: state, dtype: object

  也可以通过ix获取一行数据:

In [109]: frame1.ix["one"] # 或者是 frame1.ix[0]
Out[109]:
pop       1.5
state    Ohio
year     2000
Name: one, dtype: object# 获取多行数据In [110]: frame1.ix[["tow","three","four"]]Out[110]:        pop   state    yeartow    NaN     NaN     NaNthree  3.6    Ohio  2002.0four   2.4  Nevada  2001.0# 还可以通过默认数字行索引来获取数据In [111]: frame1.ix[range(3)]Out[111]:        pop state  yearone    1.5  Ohio  2000two    1.7  Ohio  2001three  3.6  Ohio  2002

  获取指定行,指定列的交汇值:

In [119]: frame1["state"]
Out[119]:
one        Ohio
two        Ohio
three      Ohio
four     Nevada
five     Nevada
Name: state, dtype: object

In [120]: frame1["state"][0]
Out[120]: ‘Ohio‘

In [121]: frame1["state"]["one"]
Out[121]: ‘Ohio‘

  先指定列再指定行:

In [125]: frame1.ix[0]
Out[125]:
pop       1.5
state    Ohio
year     2000
Name: one, dtype: object

In [126]: frame1.ix[0]["state"]
Out[126]: ‘Ohio‘

In [127]: frame1.ix["one"]["state"]
Out[127]: ‘Ohio‘

In [128]: frame1.ix["one"][0]
Out[128]: 1.5

In [129]: frame1.ix[0][0]
Out[129]: 1.5

3. DataFrame 对象的修改

  增加一列,并所有赋值为同一个值:

# 增加一列值In [131]: frame1["debt"] = 10

In [132]: frame1
Out[132]:
       pop   state  year  debt
one    1.5    Ohio  2000    10
two    1.7    Ohio  2001    10
three  3.6    Ohio  2002    10
four   2.4  Nevada  2001    10
five   2.9  Nevada  2002    10
# 更改一列的值
In [133]: frame1["debt"] = np.arange(5)

In [134]: frame1
Out[134]:
       pop   state  year  debt
one    1.5    Ohio  2000     0
two    1.7    Ohio  2001     1
three  3.6    Ohio  2002     2
four   2.4  Nevada  2001     3
five   2.9  Nevada  2002     4

  追加类型为Series的一列

# 判断是否为东部区In [137]: east = (frame1.state == "Ohio")

In [138]: east
Out[138]:
one       True
two       True
three     True
four     False
five     False
Name: state, dtype: bool
# 赋Series值
In [139]: frame1["east"] = east

In [140]: frame1
Out[140]:
       pop   state  year  debt   east
one    1.5    Ohio  2000     0   True
two    1.7    Ohio  2001     1   True
three  3.6    Ohio  2002     2   True
four   2.4  Nevada  2001     3  False
five   2.9  Nevada  2002     4  False

  DataFrame 的行可以命名,同时多列也可以命名:

In [145]: frame3.columns.name = "state"

In [146]: frame3.index.name = "year"

In [147]: frame3
Out[147]:
state  Nevada  Ohio
year
2002      2.9   3.6
2001      2.4   1.7
2000      NaN   1.5
时间: 2024-11-06 22:36:56

pandas 学习(2): pandas 数据结构之DataFrame的相关文章

Pandas学习笔记,如何删除DataFrame中的一列(行)

同样,引入一个DataFrame d = ts.get_hist_data('600848', start='2015-01-05', end='2015-01-09') data = pd.DataFrame(d) print(data.columns) Index(['open', 'high', 'close', 'low', 'volume', 'price_change', 'p_change', 'ma5', 'ma10', 'ma20', 'v_ma5', 'v_ma10', 'v

pandas 学习(1): pandas 数据结构之Series

1. Series Series 是一个类数组的数据结构,同时带有标签(lable)或者说索引(index). 1.1 下边生成一个最简单的Series对象,因为没有给Series指定索引,所以此时会使用默认索引(从0到N-1). # 引入Series和DataFrameIn [16]: from pandas import Series,DataFrame In [17]: import pandas as pd In [18]: ser1 = Series([1,2,3,4]) In [19

小白学 Python 数据分析(4):Pandas (三)数据结构 DataFrame

在家为国家做贡献太无聊,不如跟我一起学点 Python 人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):Pandas (二)数据结构 Series 引言 DataFrame 是由多种类型的列构成的二维标签数据结构. 简单理解是类似于 Excel . SQL 表的结构. DataFrame 是最常用的 Pandas 对象,与 Series 一样,Da

<转>pandas学习

1.Pandas 基本介绍 Numpy 和 Pandas 有什么不同? 如果用 python 的列表和字典来作比较, 那么可以说 Numpy 是列表形式的,没有数值标签,而 Pandas 就是字典形式.Pandas是基于Numpy构建的,让Numpy为中心的应用变得更加简单. pandas基本功能和使用方法有哪些? 要使用pandas,首先需要了解他主要两个数据结构:Series和DataFrame. Series的 创建: import pandas as pd import numpy as

pandas小记:pandas数据结构及基本功能

http://blog.csdn.net/pipisorry/article/details/18010307 pandas的数据 结构:Series.DataFrame.索引对象pandas基本功能:重新索引,丢弃指定轴上的项,索引.选取和过滤,算术运算和数据对齐,函数应用和映射,排序和排名,带有重复值的轴索引 Pandas介绍 pandas含有使数据分析工作变得更快更简单的高级数据结构和操作工具.它是基于NumPy构建的,让以NumPy为中心的应用变得更加简单. 通常建议你先学习NumPy,

pandas学习系列(一):时间序列

最近参加了天池的一个机场航空人流量预测大赛,需要用时间序列来预测,因此开始使用python的pandas库 发现pandas库功能的确很强大,因此在这记录我的pandas学习之路. # -*- coding: utf-8 -*- # 统计未来3小时将要起飞的人数 import os import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.preprocessing import Min

利用 Python 进行数据分析(七)- pandas 简单介绍(Series和DataFrame)

一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构:Series 和 DataFrame. 二.Series Series 是一个一维数组对象 ,类似于 NumPy 的一维 array.它除了包含一组数据还包含一组索引,所以可以把它理解为一组带索引的数组. 将 Python 数组转换成 Series 对象: 将 Python 字典转换成 Serie

pandas学习(常用数学统计方法总结、读取或保存数据、缺省值和异常值处理)

pandas学习(常用数学统计方法总结.读取或保存数据.缺省值和异常值处理) 目录 常用数学统计方法总结 读取或保存数据 缺省值和异常值处理 常用数学统计方法总结 count 计算非NA值的数量 describe 针对Series或DataFrame列计算统计 min/max/sum 计算最小值 最大值 总和 argmin argmax 计算能够获取到最小值和最大值的索引位置(整数) idxmin idxmax 计算能够获取到最小值和最大值的索引值 quantile 计算样本的分位数(0到1)

pandas学习(创建多层索引、数据重塑与轴向旋转)

pandas学习(创建多层索引.数据重塑与轴向旋转) 目录 创建多层索引 数据重塑与轴向旋转 创建多层索引 隐式构造 Series 最常见的方法是给DataFrame构造函数的index参数传递两个或更多的数组,Series也可以创建多层索引. s = Series(np.random.randint(0,150,size=6),index=[['a','a','b','b','c','c'],['期中','期末','期中','期末','期中','期末']]) # 输出 a 期中 59 期末 4

pandas 学习 第11篇:DataFrame-数据处理(分组、聚合、窗口、相关、统计)

数据处理的目的是为了数据分析,下面分享常用的数据分析中会用到的函数. 一,分组和聚合 groupby用于对数据分组,分组之后可以直接调用聚合函数求值:agg()函数把分组和调用聚合函数集成到一个函数来实现: DataFrame.groupby(self, by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, observed=False, **kwargs) DataFrame