Pandas中的常用数据类型详解
作者:Happy look
文章总结:介绍了pandas库中常用的四种数据结构:Series、DatetimeIndex、DataFrame和Panel,详细解释了Series和DatetimeIndex的基本组成和常用操作,并提供了生成时间序列对象的函数date_range()及其参数说明
Pandas常用数据类型
扩展库pandas常用的数据结构
如下:
(1)Series:带标签的一维数组
(2)DatetimeIndes:时间序列
(3)DateFrame:带标签且大小可变的二维表格结构
(4)Panel:带标签且大小可变的三维数组
1.一维数组与常用操作
Series由索引和值两部分组成,是一个类似于字典的结构。
其中值的类型可以不同,如果在创建时没有明确指定索引,则会自动使用从0开始的非负整数作为索引。
import pandas as pd import matplotlib.pyplot as plt # 设置输出结果列对齐 pd.set_option('display.unicode.ambiguous_as_wide',True) pd.set_option('display.unicode.east_asian_width',True) # 自动创建从0开始的非负整数索引 s1=pd.Series(range(1,20,5)) # 使用字典创建Series,使用字典的“键”作为索引 s2=pd.Series({'语文':90,'数学':92,'Python':98,'物理':87,'化学':92}) # 修改指定索引对应的值 s1[3]=-17 s2['语文']=94 print('s1原始数据'.ljust(20,'=')) print(s1,'\n') print('对s1所有数据求绝对值'.ljust(20,'=')) print(abs(s1),'\n') print('s1的每行索引前面加上数字2'.ljust(20,'=')) print(s1.add_prefix(2),'\n') print('s2原始数据'.ljust(20,'=')) print(s2,'\n') print('s2数据的直方图'.ljust(20,'=')) s2.hist() plt.show() print('s2的每行索引后面加上_张三'.ljust(20,'=')) print(s2.add_suffix('_张三'),'\n') print('s2最大值的索引'.ljust(20,'=')) print(s2.idxmax(),'\n') print('测试s2的值是否在指定区间内'.ljust(20,'=')) print(s2.between(90,94,inclusive=True),'\n') print('查看s2中90分以上的数据'.ljust(20,'=')) print(s2[s2>90],'\n') print('查看s2中大于中值的数据'.ljust(20,'=')) print(s2[s2>s2.median()],'\n') print('s2与数字之间的运算'.ljust(20,'=')) print(round((s2**0.5)*10,1),'\n') print('s2中最小的2个值'.ljust(20,'\n')) print(s2.nsmallest(2),'\n') # 两个等长Series对象之间可以进行四则运算和幂运算 # 只对两个Series对象中都有的索引对应的值进行计算 # 非共同索引对应的值为空值 print('两个Series对象相加'.ljust(20,'=')) print(pd.Series(range(5))+pd.Series(range(5,10)),'\n') # pipe()方法可以实现函数链式调用的功能 print('每个值加3之后再乘以3'.ljust(20,'=')) print(pd.Series(range(5)).pipe(lambda x:x+3).pipe(lambda x:x*3),'\n') print('每个值的平方对5的余数'.ljust(20,'=')) print(pd.Series(range(5)).pipe(lambda x,y,z:(x**y)%z,2,5),'\n') # apply()方法用来对Series对象的值进行函数运算 print('每个值加3'.ljust(20,'=')) print(pd.Series(range(5)).apply(lambda x:x+3),'\n') print('标准差、无偏方差、无偏标准差'.ljust(20,'=')) print(pd.Series(range(5)).std(),'\n') print(pd.Series(range(5)).var(),'\n') print(pd.Series(range(5)).sem(),'\n') print('检查是否存在等价于True的值'.ljust(20,'=')) print(any(pd.Series([3,0,True])),'\n') print('查看是否所有值都等价于True'.ljust(20,'=')) print(all(pd.Series([3,0,True])))
2.时间序列与常用操作
使用pandas的date_range()函数生成时间序列对象:
date_range(start=None,end=None,periods=None,freq='D',tz=None,normalize=False,name=None,closed=None,**kwargs)
- (1)start和end用来指定起止日期时间
- (2)periods用来指定要生成的数据数量
- (3)freq用来指定时间间隔,默认为'D',表示相邻两个日期之间相差一天
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。