Pandas模块

心已入冬 提交于 2020-02-19 16:49:54

Pandas简介

pandas是用于对数据进行分析,其需要依赖numpy模块,所以需要首先安装numpy
安装:pip install pandas
导入:import pandas as pd
主要功能:
1、具备对其功能的数据结构DataFrame、Series(即两种对象,其实有更多)
2、集成时间序列功能
3、提供丰富的数学运算和操作
4、灵活处理缺失数据

Series对象

Series对象是一种类似于一维数组的对象,由一组数据和一组与之相关的数据标签(索引)组成,好像是字典和列表的结合体

创建

方式一、pd.Series(列表或数组{,index=[列表]})

sr = pd.Series([1, 3, 5, 7, 9])
"""
0    1
1    3
2    5
3    7
4    9
""" 
sr = pd.Series([1, 3, 5, 7, 9], index=list('abcde'))
"""
a    1
b    3
c    5
d    7
e    9
dtype: int64
"""

方式二、pd.Series(字典)

sr = pd.Series({'a': 1, 'b': 3, 'c': 5, 'd': 7, 'e': 9})
"""
a    1
b    3
c    5
d    7
e    9
dtype: int64
"""

取对应下标或标签的值

sr = pd.Series({'a': 1, 'b': 3, 'c': 5, 'd': 7, 'e': 9})
"""
a    1
b    3
c    5
d    7
e    9
dtype: int64
"""
# 可按下标取值
print(sr[0])  # 1
# 如指定了标签,则可使用标签,字典的key
print(sr['c'])  # 5

属性

index属性和values属性

# index属性
sr = pd.Series({'a': 1, 'b': 3, 'c': 5, 'd': 7, 'e': 9})
print(sr.index)  # Index(['a', 'b', 'c', 'd', 'e'], dtype='object')
# values属性
sr = pd.Series({'a': 1, 'b': 3, 'c': 5, 'd': 7, 'e': 9})
print(sr.values)  # [1 3 5 7 9]

iloc属性:指定用下标索引
loc属性:标签索引

Series特性

数组的特性

Series支持数组(numpy)的特性,如与数值的计算、两个Series的运算,索引、切片、通用函数(如np.sqrt(sr))、布尔值过滤、统计函数

字典的特性

1、in运算:
'a' in sr:判断a是不是sr的标签之一
for x in sr:这里注意,python循环的是字典的键,而在Series中循环的是sr的值

sr = pd.Series({'a': 1, 'b': 3, 'c': 5, 'd': 7, 'e': 9})
for x in sr:
    print(x)
"""
1
3
5
7
9
"""
# 如果要循环标签,可加上index,如下:
for x in sr.index:
    print(x)
"""
a
b
c
d
e
"""

2、键索引:sr['a']、sr[['a', 'b', 'e']]
3、键切片:sr['a':'c'],注意python字典切片是不包尾,但在Series切片是包尾的

sr = pd.Series({'a': 1, 'b': 3, 'c': 5, 'd': 7, 'e': 9})
print(sr['a': 'c'])
"""
a    1
b    3
c    5
"""

4、get函数:与字典的get是类似的sr.get('a', default=0)

整数索引

以下情况:

sr1 = pd.Series([1, 3, 5, 7, 9, 11])
sr2 = sr1[2:5]
"""
2    5
3    7
4    9
"""

那么sr2[2]是按下标索引还是标签索引?下面做了个测试

print(sr2[2])  # 5

得出了是按标签索引,所以默认是按标签索引,而如果要指定是按下标索引怎么办呢?用到iloc属性,如下:

print(sr2.iloc[2])  # 9

也可指定用标签索引,用loc属性

print(sr2.loc[2]) # 5


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!