pandas DataFrame和Series

Pandas入门—Series和DataFrame



概述:pandas含有使数据分析工作变得更快更简单的高级数据结构和操作工具,pandas是基于Numpy构建的。pandas在过去的几年中逐渐成长为一个非常强大的库。

pandas的数据结构介绍

引入pandas

>>> from pandas import Series,DataFrame
>>> import pandas as pd

pandas有两个主要的数据结构:Series和DataFrame.

Series

Series是一种类似于一维数组的对象,它由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据即可产生最简单的Series:

>>> obj = Series([4,7,-5,3])
>>> obj
0    4
1    7
2   -5
3    3
dtype: int64

Series的字符串表现形式为:索引在左边,值在右边。你可以通过Series的values和index属性获取其数组表现形式和索引对象:

>>> obj.values
array([ 4,  7, -5,  3], dtype=int64)
>>> obj.index
RangeIndex(start=0, stop=4, step=1)

通常,我们希望所创建的Series带有一个可以对各个数据点进行标记的索引:

>>> obj2 = Series([4,7,-5,3],index=[‘d‘,‘b‘,‘a‘,‘c‘])
>>> obj2
d    4
b    7
a   -5
c    3
dtype: int64

与普通的Numpy相比,你可以通过索引的方式选取Series的单个或者一组值

>>> obj2[‘a‘]
-5

>>> obj2[[‘a‘,‘b‘]] #注意这里是双层[]
a   -5
b    7
dtype: int64

Numpy数组运算都会保留索引和值之间的链接。

>>> obj2 * 2
d     8
b    14
a   -10
c     6

还可以将Series看成是定长的有序字典,因为它是索引值到数据值的一个映射。

>>> ‘b‘ in obj2
True

如果数据存放在Python字典中,可以直接转成Series:

>>> sdata = {‘test‘:1,‘hello‘:2}
>>> obj3 = Series(sdata)
>>> obj3
hello    2
test     1
dtype: int64

NaN(非数字),在pandas中,它代表缺失或NA值。使用缺失(missing)或NA表示缺失数据。pandas的isnull和notnull函数可以用于检测缺失数据。

Series也有类似的方法。

>>> states = [‘test‘,‘haha‘]
>>> obj4 = Series(sdata,states)
>>> obj4
test    1.0
haha    NaN
dtype: float64
>>> obj4.isnull()
test    False
haha     True
dtype: bool

Series的一个重要功能是:它在算术运算中会自动地对其不同索引的数据。 
Series对象本身及索引都有一个name的属性,该属性跟pandas其他的关键功能关系非常密切。

>>> obj4.name = ‘sunpeng‘
>>> obj4.index.name = ‘llala‘
>>> obj4
llala
test    1.0
haha    NaN
Name: sunpeng, dtype: float64

Series的索引也可以通过赋值的方式就地修改。

DataFrame

DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共同用一个索引)。和其他类似的数据结构相比,DataFrame中面向行和面向列的操作基本上是平衡的。其实,DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或别的数据结构)。

构建DataFrame的方法有很多,最常用的方法是直接传入一个由等长列表或Numpy数组组成的字典:

>>> data = {‘state‘:[‘1‘,‘2‘],‘year‘:[‘a‘,‘b‘],‘pop‘:[‘x‘,‘y‘]}
>>> data
{‘state‘: [‘1‘, ‘2‘], ‘pop‘: [‘x‘, ‘y‘], ‘year‘: [‘a‘, ‘b‘]}
>>> frame = DataFrame(data)
>>> frame
    pop state year
0   x     1    a
1   y     2    b

结果DataFrame会自动加上索引,且全部列会被有序排列。 
如果指定了列顺序,则DataFrame的列就会按照指定顺序进行排列。

>>> DataFrame(data,columns=[‘year‘,‘pop‘,‘state‘])
  year pop state
0    a   x     1
1    b   y     2

如果穿入的列在数据中找不到,就会产生NA值。 
通过类似字典标记的方式或属性的方式,可以讲DataFrame的列获取为一个Series。

原文地址:https://www.cnblogs.com/zenan/p/8387286.html

时间: 2024-11-04 22:50:52

pandas DataFrame和Series的相关文章

pandas DataFrame(5)-合并DataFrame与Series

之前已经学过DataFrame与DataFrame相加,Series与Series相加,这篇介绍下DataFrame与Series的相加: import pandas as pd s = pd.Series([1, 2, 3, 4]) df = pd.DataFrame({ 0: [10, 20, 30, 40], 1: [50, 60, 70, 80], 2: [90, 100, 110, 120], 3: [130, 140, 150, 160] }) print df + s 0 1 2

pandas.DataFrame.plot

pandas.DataFrame.plot¶ DataFrame.plot(x=None, y=None, kind='line', ax=None, subplots=False, sharex=None, sharey=False, layout=None, figsize=None, use_index=True, title=None, grid=None, legend=True, style=None, logx=False, logy=False, loglog=False, xt

pandas.DataFrame学习系列2——函数方法(1)

DataFrame类具有很多方法,下面做用法的介绍和举例. pandas.DataFrame学习系列2--函数方法(1) 1.abs(),返回DataFrame每个数值的绝对值,前提是所有元素均为数值型 1 import pandas as pd 2 import numpy as np 3 4 df=pd.read_excel('南京银行.xlsx',index_col='Date') 5 df1=df[:5] 6 df1.iat[0,1]=-df1.iat[0,1] 7 df1 8 Open

pandas.DataFrame学习系列1——定义及属性

定义: DataFrame是二维的.大小可变的.成分混合的.具有标签化坐标轴(行和列)的表数据结构.基于行和列标签进行计算.可以被看作是为序列对象(Series)提供的类似字典的一个容器,是pandas中主要的数据结构. 形式: class pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False) 参数含义: data : numpy ndarray(多维数组)(结构化或同质化的), dict(字典

Python Pandas -- DataFrame

pandas.DataFrame class pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)[source] Two-dimensional size-mutable, potentially heterogeneous tabular data structure with labeled axes (rows and columns). Arithmetic operations al

pandas DataFrame(1)

之前介绍了numpy的二维数组,但是numpy二维数组有一些局限性,比如,它数组里所有的值的类型必须相同,不能某一列是数值型,某一列是字符串型,这样会导致无法使用 mean() , std() 等方法去计算某一行或某一列. 但是,使用pandas DataFrame可以解决这一问题. pandas DataFrame也是二维数据,和pandas Series一样, pandas DataFrame也有'索引'这个概念,它每一列都有一个索引值: import pandas as pd df = p

数据分析--pandas DataFrame

pandas DataFrame是一个表格类型的数据,含有一组有序的列,每列可以是不同的值类型(数值,字符串,布尔值).DataFrame即有行索引,也有列索引,可以看作由Series组成的字典(公用同一个索引). DataFrame是以一个或者多个二维块存放的(而不是列表,字典或别的一维数据结构) 构建DataFrame 传入一个等长列表或Numpy数组组成的字典 DataFrame会自动加上索引,且全部列会被有序排列 可以指定序列的排序 传入的列在数据中找不到,会产生Na值 从DataFra

pandas DataFrame apply()函数(1)

之前已经写过pandas DataFrame applymap()函数 还有pandas数组(pandas Series)-(5)apply方法自定义函数 pandas DataFrame 的 applymap() 函数和pandas Series 的 apply() 方法,都是对整个对象上个各个值进行单独处理,返回一个新的对象. 而pandas DataFrame 的  apply() 函数,虽然也是作用于DataFrame的每个值,但是接受的参数不是各个值本身,而是DataFrame里各行(

Pandas 学习之Series学习

Pandas 数据结构 first: import numpy as np import pandas as pd Series 1.支持任意类型的一维标签数据,分为数据部分和轴标签部分(索引) 2.可以从list,dict,ndarray,scalar value等数据类型来创建 3.Series的取值和向量运算 From ndarray python s = pd.Series(np.random.randn(5),index = 'a b c d e'.split(' ')) python