pandas库的使用Series

pandas库的使用

pandas 我们课程后续用得最多的一个模块,主要用于进行数据探索和数据分析

Pandas 是基于 NumPy 的一个开源 Python 库,它被广泛用于快速分析数据,以及数据清洗和准备等工作。它的名字来源是由“ Panel data”(面板数据,一个计量经济学名词)两个单词拼成的。**简单地说,你可以把 Pandas 看作是 Python 版的 Excel。

pandas库与numpy的区别

Numpy    

基础数据类型

关注数据的结构表达

维度:数据间关系

-------------------------------------------------------------

Pandas

扩展数据类型

关注数据的应用表达

数据与索引间的关系

Pandas 的数据结构

Series 是一种一维数组,和 NumPy 里的数组很相 似。事实上,Series 基本上就是基于 NumPy 的数组对象来的。和 NumPy 的数组不同,Series 能为数据自定义标签,也就是索引(index),然后通过索引来访问数组中的数据。

通常,我们导入如下:

In [1]: import numpy as np

In [2]: import pandas as pd

对象创建

Series类型由一组数据及与之相关的数据索引组成。

Serjes可以由如下类型创建:

1.python列表,index与列表元素个数一致

2.标量值,index表达Series类型的尺寸

3.ndarray,索引和数据都可以通过ndarray创建

4.python 字典 键值中的键是索引,index从字典中进行选择操作

5.其他函数,range()函数等。

创建一个Series通过传递值的列表,让大熊猫创建一个默认的整数索引:

s = pd.Series(date,index)

上面的 data 参数可以是任意数据对象,比如字典、列表甚至是 NumPy 数组,而index 参数则是对 data 的索引值,类似字典的 key。

下面这个例子里,将创建一个 Series 对象,并用字符串对数字列表进行索引:

In [22]: countries = ['USA','Nigeria','France','Ghana']  
  ...: my_date = [100,200,300,400]
  ...: s = pd.Series(my_date,tcountries)

In [23]: s
Out[23]:
USA        100
Nigeria    200
France     300
Ghana      400
dtype: int64 #Numpy 中的数据类型

注意:请记住, index 参数是可省略的,你可以选择不输入这个参数。如果不带 index 参数,Pandas 会自动用默认 index 进行索引,类似数组,索引值是 [0, ..., len(data) - 1] ,如下所示:

从 NumPy 数组对象创建 Series:

In [5]: np_arr = np.array(my_date)
In [6]: pd.Series(np_arr)
Out[6]:
0    100
1    200
2    300
3    400
dtype: int32
   
#从字典创建Series数组    

In [7]: my_dict = {'a':50,'b':60,'c':70,'d':80}
  ...: pd.Series(my_dict)
Out[7]:
a    50
b    60
c    70
d    80
dtype: int64
   
 #如果传入index 从字典的键进行挑选,无值则为NaN,按index的顺序来
In [11]: e =pd.Series(my_dict,index=['c','a','b','d','f'])
In [12]: e
Out[12]:
c    70.0
a    50.0
b    60.0
d    80.0
f     NaN
dtype: float64
Series类型的基本操作
Series类型包括index和values两部分。
Series类型的操作类似ndarray类型。
Series类型的操作类似python字典类型。
 
Series对象可以根据 .index 和.values 获得Series对象的索引和数据,示例代码如下:
In [15]: import pandas as pd 
# 导入pandas as pd
In [16]: b= pd.Series([9,8,7,6],['a','b','c','d'])
#生成一个Series 对象
In [17]: b
Out[17]:
a    9
b    8
c    7
d    6
dtype: int64

In [18]: b.index #获取所有的索引
Out[18]: Index(['a', 'b', 'c', 'd'], dtype='object')

In [19]: b.values #获取所有的values值
Out[19]: array([9, 8, 7, 6], dtype=int64)
In [20]: b['b']
Out[20]: 8

In [21]: b[1]
Out[21]: 8
#自动索引和自定义索引并存
In [22]: b[['c','d',0]]
Out[22]:
c    7.0
d    6.0
0    NaN
dtype: float64

In [23]: b[['c','d','a']]
Out[23]:
c    7
d    6
a    9
dtype: int64
#两套索引共存但是不能混合使用
Series类型的操作类似ndarray类型。
索引方法相同,都采用[]
NumPy中运算和操作可用于Series类型
可以通过自定义索引的列表进行切片。
可以通过自定义索引进行切片,如果存在自定义索引,则一同被切片
 
In [24]: b[3]  #通过自动索引3 取到5
Out[24]: 6

In [25]: b[:3]# 切片0-3之内的值并且还有其索引
Out[25]:
a    9
b    8
c    7
dtype: int64
   
In [26]: b[b>b.median()] #大于中位数的
Out[26]:
a    9
b    8
dtype: int64

In [27]: np.exp(b) #e的x方运算
Out[27]:
a    8103.083928
b    2980.957987
c    1096.633158
d     403.428793
dtype: float64
Series类型的操作类似python字典类型。
通过自定义索引访问。
保留字in操作
使用.get()方法
 
In [28]: 'c' in b
Out[28]: True  #判断自定义索引是否在b中

In [29]: 0 in b
Out[29]: False  #无法判断自动索引 ok?

In [30]: b.get('f',100) #b中提取f索引的值100,如果不存在则返回100,存在返回f对应的值如果不定义100则返回空
Out[30]: 100

Series的对齐问题,示例代码如下:

In [34]: a =pd.Series([1,2,3],['c','d','e'])
#生成一个Series对象a
In [35]: a+b
Out[35]: #结果是一个并集只有同索引的值可以相加,其他值默认都是NaN
a    NaN
b    NaN
c    8.0
d    8.0
e    NaN
dtype: float64
PS:
   Series类型在运算中会自动对齐不同索引的数据

Series类型的name属性:

Series对象和索引都可以有一个名字,存储在.name中。

In [37]: b.name

In [38]: b.name='Series 对象'  #给b.name 赋值

In [39]: b.index.name='索引列' #给index.name赋值

In [40]: b
Out[40]:
索引列
a    9
b    8
c    7
d    6
Name: Series 对象, dtype: int64

Series类型的修改

Series对象可以随时修改并即刻生效。

In [42]: b
Out[42]:
索引列
a    9
b    8
c    7
d    6
Name: Series 对象, dtype: int64

In [43]: b['a']
Out[43]: 9

In [44]: b['a']=15

In [45]: b.name = 'Series' #赋值生效

In [46]: b
Out[46]:
索引列
a    15
b     8
c     7
d     6
Name: Series, dtype: int64

In [47]: b.name = 'New Series'

In [48]: b['b','c'] = 20

In [49]: b
Out[49]:
索引列
a    15
b    20
c    20
d     6
Name: New Series, dtype: int64
原文地址:https://www.cnblogs.com/pythonyeyu/p/10734389.html