pandas:透视表, sort_values()排序,to_datetime() 时间格式转换并筛选指定时间段得数据, 高级函数

1. 透视表

1.1 场景说明
  • 通常情况下使用groupby就能完成透视图的效果的, 但在一些需要操作多行多列的情况下, 使用透视表函数会更为直观。
1.2 参数详解
  • data:dataframe格式数据
  • values:需要汇总计算的列,可多选
  • index:行分组键,一般是用于分组的列名或其他分组键,作为结果DataFrame的行索引
  • columns:列分组键,一般是用于分组的列名或其他分组键,作为结果DataFrame的列索引
  • aggfunc:聚合函数或函数列表,默认为平均值
  • fill_value:设定缺失替换值
  • margins:是否添加行列的总计
  • dropna:默认为True,如果列的所有值都是NaN,将不作为计算列,False时,被保留
  • margins_name:汇总行列的名称,默认为All
  • observed:是否显示观测值
1.3 示例

参考示例

https://zhuanlan.zhihu.com/p/267208129

实际应用示例

pivot = pd.pivot_table(df,
                           index=dict_config["cabinet_temperature"][
                               "filter_col_station"][0],
                           values=legend, 
                           aggfunc=np.max)

2. sort_values()排序

2.1 使用场景
  • 可以指定列排序, 有时会指定多列, 且每列的规则排序规则不同(也可以是行, 如需自已排序可以利用apply函数自定义规则而不使用sort_values)(可选升序降序)
2.2 参数详解
  • by 指定要进行排序的列名或索引值
  • axis: 若 axis=0 或 ‘index’,则按照指定列的数据大小排序;若 axis=1 或 ‘columns’,则按照指定索引中数据大小排序。默认axis=0
  • ascending:若 ascending=True,则按照升序排序;若 ascending=False,则按降序排序,默认为True,即升序排序。如果这是一个 bool 列表,则必须匹配 by 的长度
  • kind: str = “quicksort”, 可选择稳定排序,根据实际情况选择
  • na_position: str = “last”, 排序后na值得位置
  • inplace: 排序后的数据是否替换原来的数据,默认为False,即不替换
  • ignore_index 是否重置索引,默认为不重置
2.3 示例

参考示例

https://blog.csdn.net/BlueWhale52/article/details/119187311

实际应用示例

 # 对多列排序 机柜升序,舱门升序, 截止日期降序
    df = df.sort_values(by=dict_config[
                               "lock_store"]["filter_col_area"][4:7],
                        ascending=[True, True, False],
                        ignore_index=True)

3. to_datetime() 时间格式转换并筛选指定时间段得数据

3.1 使用场景
  • 当需要根据时间筛选df对象是, 需要转化时间格式
3.2 参数详解
  • pandas.to_datetime(param, format=“”)
3.3 示例

参考示例

https://www.delftstack.com/zh/howto/python-pandas/how-to-convert-dataframe-column-to-datetime-in-pandas/

实际应用示例

 # 转化时间类型 并筛选
    # 1. 转化时间格式
    df[dict_config["lock_store"]["filter_col_area"][6]] = pd.to_datetime(
        df[dict_config["lock_store"]["filter_col_area"][6]],
        format="%Y-%m-%d %H:%M:%S")
    tem_time = datetime.datetime.strptime(dict_config["lock_store"]["filter_condition_area"][2],
                                          "%Y-%m-%d %H:%M:%S")
    # 2. 统计周期最后一天的时间的最后五分钟 23:55:00
    df = df[df[dict_config["lock_store"]["filter_col_area"][6]] >= tem_time]

4。 拓展 高级函数

  • 函数里得一等公民 filter() , map(), 2.reduce() -

http://www.zzvips.com/article/214140.html

  • 魔法函数
  • http://www.zzvips.com/article/214140.html
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值