首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

(数据科学学习手札99)掌握pandas中的时序数据分组运算

本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介   我们在使用pandas分析处理时间序列数据时...原始的意思是重采样,可分为上采样与下采样,而我们通常情况下使用的都是下采样,也就是从高频的数据中按照一定规则计算出更低频的数据,就像我们一开始说的对每日数据按月汇总那样。   ...如果你熟悉pandas中的groupby()分组运算,那么你就可以很快地理解resample()的使用方式,它本质上就是在对时间序列数据进行“分组”,最基础的参数为rule,用于设置按照何种方式进行重采样...图5   而即使你的数据框index不是日期时间类型,也可以使用参数on来传入日期时间列名实现同样的效果。...它通过参数freq传入等价于resample()中rule的参数,并利用参数key指定对应的时间类型列名称,但是可以帮助我们创建分组规则后传入groupby()中: # 分别对苹果与微软每月平均收盘价进行统计

1.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    强烈推荐一个Python可视化模块,简单又好用

    点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达 数据可视化动画还在用Excel做?现在一个简单的Python包就能分分钟搞定!...使用指南 想要使用Pynimate,直接import一下就行。 import pynimate as nim 输入数据后,Pynimate将使用函数Barplot()来创建条形数据动画。...而创建这种动画,输入的数据必须是pandas数据结构(如下),其中将时间列设置为索引,换句话说索引代表的是自变量。...举个栗子,下面这个表格中的数据只有三个时间点,按理说只能生成3帧视频,最终动画也只有3/24秒。...,则要视具体的数据而定,一般绘制大数据时,设置为ip_freq = None。

    8710

    掌握pandas中的时序数据分组运算

    pandas分析处理时间序列数据时,经常需要对原始时间粒度下的数据,按照不同的时间粒度进行分组聚合运算,譬如基于每个交易日的股票收盘价,计算每个月的最低和最高收盘价。...原始的意思是「重采样」,可分为「上采样」与「下采样」,而我们通常情况下使用的都是「下采样」,也就是从高频的数据中按照一定规则计算出更低频的数据,就像我们一开始说的对每日数据按月汇总那样。...,譬如我们以2日为单位,将closed设置为'right'时,从第一行记录开始计算所落入的时间窗口时,其对应为时间窗口的右边界,从而影响后续所有时间单元的划分方式: ( AAPL .set_index...index不是日期时间类型,也可以使用参数on来传入日期时间列名实现同样的效果。...它通过参数freq传入等价于resample()中rule的参数,并利用参数key指定对应的时间类型列名称,但是可以帮助我们创建分组规则后传入groupby()中: # 分别对苹果与微软每月平均收盘价进行统计

    3.4K10

    强烈推荐一个Python可视化模块,简单又好用!!

    import pynimate as nim 输入数据后,Pynimate将使用函数Barplot()来创建条形数据动画。...而创建这种动画,输入的数据必须是pandas数据结构(如下),其中将时间列设置为索引,换句话说索引代表的是自变量。...最后是ip_freq,它是制作动画中比较关键的一步,通过线性插值使动画更加流畅丝滑。 一般来说,并不是所有的原始数据都适合做成动画,现在一个典型的视频是24fps,即每秒有24帧。...举个栗子,下面这个表格中的数据只有三个时间点,按理说只能生成3帧视频,最终动画也只有3/24秒。...,则要视具体的数据而定,一般绘制大数据时,设置为ip_freq = None。

    74820

    Series计算和DataFrame常用属性方法

    Series的布尔索引 从Series中获取满足某些条件的数据,可以使用布尔索引 然后可以手动创建布尔值列表 bool_index = [True,False,False,False,True] scientists...也可以利用布尔索引获取某些元素(使用逻辑运算获取最小值) 更改Series 和DataFrame 通过set_index()方法设置行索引名字 加载数据文件时,如果不指定行索引,Pandas会自动加上从...0开始的索引 如果提前写好行索引的列表,可以用set_index引入进来,也可以直接写入列表内容 加载数据的时候,也可以通过通过index_col参数,指定使用某一列数据作为行索引 movie2 = pd.read_csv...,再赋值回去 3.通过dataframe[列名]添加新列 4.使用insert()方法插入列 loc 新插入的列在所有列中的位置(0,1,2,3...) column=列名 value=值 # index...columns[1] = '导演' columns[3] = '时长' movie2.columns = columns # 将修改后的列表命名为数据的全部列名

    11210

    【数据处理包Pandas】数据透视表

    补充:reindex用法 reindex的作用是创建一个符合新索引的新对象(默认不会修改原对象df2),它的一个用途是按新索引重新排序。...df2.reindex([(2016,1),(2017,2)]) 当现有数据无法匹配新的索引时,reindex将使用NaN填充。...数据透视表的效果可以通过groupby来实现,但有时候直接使用pivot_table方法建立数据透视表可能更方便些,而且额外提供了汇总功能。...(相当于sql里的聚合函数操作的列),默认使用data参数指定的数据;aggfunc参数指明进行聚合运算的函数,默认是mean;margins=True参数提供了数据汇总功能。...(['年份','课程']).agg({'富强':'max','李海':sum}).unstack() 注意:当来源的数据和聚合的数据不同时,需要使用values参数,下面两个语句等价。

    7400

    丢掉Excel,手把手教你用Python做可视化数据,还能任意调节动画丝滑度

    使用指南 想要使用Pynimate,直接import一下就行。 import pynimate as nim 输入数据后,Pynimate将使用函数Barplot()来创建条形数据动画。...而创建这种动画,输入的数据必须是pandas数据结构(如下),其中将时间列设置为索引,换句话说索引代表的是自变量。...举个栗子,下面这个表格中的数据只有三个时间点,按理说只能生成3帧视频,最终动画也只有3/24秒。...,则要视具体的数据而定,一般绘制大数据时,设置为ip_freq = None。...他还开发了一个应用程序:Chatmetry,同样也与数据统计有关,是一个用于创建whatsapp聊天统计数据的机器人应用程序。

    53620

    【项目实战】自监控-10-DataFrame索引操作(中篇)

    语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3.2 这个系列主要是实际在做项目的一个笔记 自监控项目,主要是对采集的质量监控数据做的一个实时预警...今天讲讲DataFrame行索引与常规列的互换 主要涉及:reset_index,set_index 今日歌曲: Part 1:构建一个DataFrame 一个DataFrame可以看成一个二维表格,...[82, 87, 89, 80]}df = pd.DataFrame(dict1, index=["x", "y", "z", "q"]) df.index.name = "ts" # 指定行索引列名称...Part 2:将索引变成列 使用reset_index将索引变成常规列 通过对replace参数进行设置,确定是否在原变量上执行操作 原索引变成常规列后,会重新自动生成一个默认索引 df.reset_index...Part 3:将列变成索引 使用set_index将常规列变成索引 同样通过设置inplace值决定是否在原变量上执行操作 执行该操作原索引会消失 df.set_index("a", inplace=True

    54610

    数据规整(1)

    state和color (1)重排序和层级排序 有时候我们需要重新排列轴上的层级顺序,可以使用swaplevel接收两个层级序号或层级名称,返回一个层级变更的新对象: frame.swaplevel...('key1', 'key2') #交换key1和key2 同样的,sort_index只能在单一层面上对数据进行排序,在进行层级变换时,使用sort_index以使得结果按照层级进行排序: frame.sort_index...,测试数据如下(数据命名为df): 将c列和d列作为索引列,用到了set_index方法,会返回一个新的DataFrame对象: df.set_index(['c', 'd']) 可以传入drop...另外的,reset_index是set_index的反操作,reset_index不需要任何参数。...(4)sort_index(level=n)可以将数据按照索引顺序为n的索引列进行排序 (5)sum(level=索引名称)可以使数据在某个层级上进行汇总统计 (6)set_index方法可以将数据的多个列作为索引列

    47920

    10分钟带你学会Pandas多层级索引

    其中Series表示一维数据,Dataframe表示二维数据,Panel表示三维数据。 但实际上,当数据高于二维时,我们一般用包含多层级索引的Dataframe进行表示,而不是使用Panel。...原因是使用多层级索引展示数据更加直观,操作数据更加灵活,并且可以表示3维,4维乃至任意维度的数据。 一,多层级索引的创建 1,指定多维列表作为columns ?...2,使用pd.MultiIndex中的方法显式生成多层级索引 可以使用pd.MultiIndex中的from_tuples等方法生成多层级索引。 ?...3,使用set_index方法将普通列转成多层级索引 这种方法只能生成多层级行索引。 ? ? ? 4,groupby和pivot_table等方法也可以生成带有多层级索引的结果 ? ? ?...2,set_index和reset_index ? ? 3,指定level的相关方法 ? ? ? ?

    95520

    Pandas高级数据处理:多级索引

    (二)从已有DataFrame创建如果已经有一个DataFrame,并且其中某些列可以作为多级索引的一部分,我们可以使用set_index()方法来创建多级索引。...这可能是由于在构建多级索引时,传入的列表顺序错误导致的。解决方法:仔细检查构建多级索引时传入的参数顺序。如果是从DataFrame创建多级索引,确保set_index()方法中传入的列名顺序正确。...(三)聚合操作复杂在多级索引的数据上进行聚合操作(如求和、平均值等)时,可能会出现一些复杂的情况。例如,我们想要计算每个地区各类别产品的销售总额,但是直接使用sum()函数可能会得到不符合预期的结果。...四、常见报错及避免方法(一)KeyError当我们尝试使用错误的索引标签(例如拼写错误或者不存在的标签)去访问多级索引的数据时,会触发KeyError。...(二)TypeError如果在构建多级索引时传入了不兼容的数据类型(例如将字符串与整数混合构建索引),可能会引发TypeError。避免方法:确保构建多级索引时传入的数据类型一致。

    16410

    一道基础题,多种解题思路,引出Pandas多个知识点

    小小明:「凹凸数据」专栏作者,Pandas数据处理高手,致力于帮助无数数据从业者解决数据处理难题。 源于林胖发出的一道基础题: ? ?...然后再看看这个explode函数,它是pandas 0.25版本才出现的函数,只有一个参数可以传入列名,然后该函数就可以把该列的列表每个元素扩展到多行上。...列表分列的2种方法 列表分列的思路:Pandas的Series对象调用apply方法单个元素返回的结果是Series时,这个Series的每个数据会作为Datafrem的每一列,索引会作为列名。...列为索引: df["b"].apply(pd.Series).set_index(df["a"]) 结果均为上述实现思路的第二步。...只要再执行set_index("a"): df.agg({"a": lambda x: x, "b": pd.Series}).droplevel(0, axis=1).set_index("a")

    1.2K20

    Pandas知识点-DataFrame数据结构介绍

    下载的数据编码格式是'gbk',所以读取数据时也要指定用'gbk',否则会报错。 ? 使用type()函数打印数据的类型,数据类型为DataFrame。...DataFrame数据由三个部分组成,行索引、列索引、数据。pandas读取DataFrame数据时,如果数据行数和列数很多,会自动将数据折叠,中间的显示为“...”。...设置某一列为行索引 上面的DataFrame数据中,行索引是0~4725的整数,假如要设置日期为行索引,可以使用set_index()方法设置。...设置多重索引MultiIndex 使用set_index()设置行索引时可以同时设置多个列为行索引。...当一列中的数据不唯一时,可以使用两列或多列来组合成多重行索引,当需要将数据处理成多维数据时,也可以用多重索引。

    2.4K40

    详解pd.DataFrame中的几种索引变换

    导读 pandas中最常用的数据结构是DataFrame,而DataFrame相较于嵌套list或者二维numpy数组更好用的原因之一在于其提供了行索引和列名。...本文主要介绍行索引的几种变换方式,包括rename与reindex、index.map、set_index与reset_index、stack与unstack等。 ?...),可接收字典或函数完成单列数据的变换;apply既可用于一列(即Series)也可用于多列(即DataFrame),但仅可接收函数作为参数,当作用于Series时对每个元素进行变换,作用于DataFrame...时对其中的每一行或每一列进行变换;而applymap则仅可作用于DataFrame,且作用对象是对DataFrame中的每个元素进行变换。...04 set_index与reset_index set_index和reset_index是一对互逆的操作,其中前者用于置位索引——将DataFrame中某一列设置为索引,同时丢弃原索引;而reset_index

    2.5K20
    领券