1 Pandas的数据结构介绍
pandas的两个主要的数据结构:Series和DataFrame。
1.1 Series介绍
直接上代码
# -*-coding:utf-8 -*-
# author:lz
from pandas import Series, np
'''
实践总结:
Serise数据机构虽然在很多地方用到,但是真正的单独使用的很少,一般都是和DataFrame结合使用,
例如,获取DataFrame的一行或一列后就会得到一个Serise,这是时才会使用Serise的一系列功能。
'''
def series_info():
''''''
'''Series由一组数据以及一组与之相关的数据标签(即索引)组成。'''
'''=========1、定义一个series========
仅由一组数据即可产生最简单的Series
在手动生成Series之前需要从pandas中导入Series包:from pandas import Series
'''
# 不指定索引,则会自动创建一个0到N-1的整数作为索引。
ser1 = Series([1,-2,4,6,8])
#print(ser1)
# 指定索引,索引长度必须和数据长度一致。
ser2 = Series([1,-2,4,6,8],index=['a','b','c','d','e'])
#print(ser2)
# 重新索引
ser20 = ser2.reindex(['b','a','d','c','e'])
#print(ser20)
# 重新索引的时候,多加了一个索引,那个多加的索引会是nan值。
ser200 = ser2.reindex(['b','a','d','c','e','f'],
fill_value=0 # 指定nan值为0
)
print(ser200)
# 重新索引的时候,可能需要做一些插值处理。
obj1 = Series(['blue','purple','yellow'],index=[0,2,4])
obj2 = obj1.reindex(range(6),
method='ffill' # 插入元素时,指定前向值填充 bfill 表示后向值填充
)
print(obj2)
exit()
# 修改索引
# ser2.index = ['A','B','C','D','E']
# print(ser2)
# 利用字典创建Series
dict = {'a':1,'b':-2,'c':4,'d':6,'e':8}
ser3 = Series(dict)
print(ser3)
'''=========2、获取Series中的数据=========
通过索引的方式获取Series中的单个或一组值
得到的“单个或一组值”数据类型依旧是Series
'''
v1 = ser2['a']
v2 = ser2[['a','c','d']]
#print(v1)
#print(type(ser1)) # <class 'pandas.core.series.Series'>
#print(v2)
#print(type(ser2)) # <class 'pandas.core.series.Series'>
'''=========3、Series进行运算=========
布尔型数组过滤、标量乘法、应用数学函数都会保留索引和值之间的链接
得到的结果依旧是Series类型
'''
ser21 = ser2[ser2>0]
#print(ser21)
#print(type(ser21)) # <class 'pandas.core.series.Series'>
ser22 = ser2*2
#print(ser22)
ser23 = np.exp(ser2)
#print(ser23)
'''=========4、遍历Series=========
利用for循环
'''
for v in ser2:
print(v)
'''=========5、判断索引中是否有要找的值(字符或数)=========
只能找索引,不能找值,这个是类似于字典的。
'''
if('b'in ser2):
print(True)
'''=========6、判断Series中是否有空值=========
利用 .isnull()
'''
'''=========7、算术运算中自动对齐不同索引地数据=========
例如:将两个Series进行相加时,会自动找到相同的索引进值相加,
注意的是,如果两个Series中存在不对应的索引,就将这些独立的索引置为nan值。
'''
ser4 = Series([1,2,3,4,-4,5],index=['a','b','aa','bb','ab','c'])
ser5 = Series([1,2,3,4,-4,5],index=['d','a','cc','aa','e','c'])
ser4_5 = ser4 + ser5
print(ser4_5)
if __name__ == '__main__':
series_info()