python数据分析---pandas处理结构化数据(一)

python数据分析—基本数据结构

一、简介:

pandas是python的一个开源工具包,为Python提供了高性能,简单易用的的数据结构数据分析工具。 pandas提供了类表格的统计操作和类SQL操作,方便数据的预处理工作,提供强大的缺失值处理功能。
pandas的特色功能:

  1. 索引对象:包括简单的索引和多次层索引。
  2. 引擎集成组合:用于汇总和转换数据集合。
  3. 日期范围生成器以及自定义日期偏移(实现自定义频率)。
  4. 输入工具和输出工具:从各种格式的文件中(csv、delimited、excel2003)加载表格数据,以及快速收高效的从PyTables/HDFS5格式中保存和加载Pandas对象。
  5. 标准数据结构的稀疏形式:可以用于存储大量缺失或者大量一致的数据。
  6. 移动窗口统计(滚动平均值、滚动标准偏差等)

二、数据结构:

2.1 .Series:

是pandas的重要数据结构,类似于一维数组与字典的集合,是一个有标签的一维数组,同时标签在Pandas中有对应的数据类型‘index’.

2.1.1 Series的创建:

Series在创建时可以接受很多种输入,比如:list、numpy的ndarray、dict甚至标量。Index可以有选择的传入。

  • 传入list
import pandas as pd
list=[1,2,3,4,5,6]
obj=pd.Series(list)
print(obj)
0    1
1    2
2    3
3    4
4    5
5    6
dtype: int64

在定义Series时没有指定索引,因此pandas将自动创建0~n-1的序列作为索引。Series对象在输出时,每一行为Series的一个元素,左侧为索引,右侧为值。

  • 传入字典
import pandas as pd
dict={
   'a':1,'b':2,'c':3}
obj=pd.Series(dict)
print(obj)
a    1
b    2
c    3
dtype: int64

通过字典创建Series对象时,索引默认为字典的键值,也可以通过index参数指定。

import pandas as pd
dict={
   'a':1,'b':2,'c':3}
obj=pd.Series(dict,index=['a','b','y'])
print(obj)
a    1.0
b    2.0
y    NaN
dtype: float64

从上面可以看出,字典中与指定索引相匹配的值诶放到了正确的位置,而不能匹配的索引对应的值为标记为NAN,这个过程叫做数据对齐。NaN(not a number),在Python中表示缺失值。

  • 传入ndarray
import pandas as pd
import numpy as np
list=['a','b','c','d','e','f']
obj=pd.Series(np.array(list))
print(obj)
0    a
1    b
2    c
3    d
4    e
5    f
dtype: object

2.1.2 Series访问

  • Series像一个ndarray,可以使用类似于访问ndarray的方式对其进行访问。
import pandas as pd
import numpy as np
list=['a','b','c','d','e','f']
obj=pd.Series(np.array(list))
print(obj)
'c'
  • Series像一个ndarray,可以用类似访问ndarray的方式进行访问。
  • Series又像一个固定大小的dict,所以可以用iloc()函数和loc()函数对Series进行访问。Series可以理解为一个定长、有序的 ‘字典’ 结果。
    loc()函数:loc()通过行标签索引行数据;结果是左闭右闭
import numpy as np
import pandas as pd

list = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]
obj = pd.Series(list, index=['a', 'b'])  #设置行标签为['a','b']
#print(obj)
print(obj.loc['a':'b'])  # 按照行索引索引数据
a     [1, 2, 3, 4, 5]
b    [6, 7, 8, 9, 10]   
dtype: object

iloc()函数:iloc()函数通过行号进行索引数据;结果是左闭右开。iloc也可以取指定行列,只不过得按切片形式索引,不能直接拿标签索引来做。

import numpy as np
import pandas as pd

list = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]
obj = pd.Series(list, index=['a', 'b'])
#print(obj)
print(obj.iloc[0:1])    #iloc()按照行号进行
a    [1, 2, 3, 4, 5]     #结果只有'a',可以看出iloc()结果是左闭右开
dtype: object
  • 可以直接通过类似数组和类似属性的方式对其进行访问。
import numpy as np
import pandas as pd

list = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]
obj = pd.Series(list, index=['a', 'b'])  # 设置行标签为['a','b']
# print(obj)
#print(obj.loc['a':'b'])  # 按照行索引索引数据
obj['c'] = [1, 2, 3, 4, 5]     
print(obj)
print(obj.b)
a     [1, 2, 3, 4, 5]
b    [6, 7, 8, 9, 10]
c     [1, 2, 3, 4, 5]
dtype: object
[6, 7, 8, 9, 10]

2.1.3 Series的操作

  • 像数组一样对Series进行遍历的操作是没有必要的。
  • Numpy对ndarray的操作对Series同样也可以,但由于索引的原因,操作时要注意数组对齐的问题。

2.1.4 Series的name属性

Series对像的索引与值可以通过属性index和values属性获取。

import numpy as np
import pandas as pd

list = [[1, 2, 3, 4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值