pandas 索引列、过滤、分组、求和

【第7章Pandas实战案例与解析 分组聚合】7.405 深入Pandas:在groupby()中设置分组键为非索引列 groupby()# 定义自定义聚合函数# 使用自定义聚合函数print("\n使用自定义聚合函数的结果:") 阅读详情

解析html内容,保存为csv文件

http://blog.youkuaiyun.com/github_26672553/article/details/78662563
前面我们已经把519961(基金编码)这种基金的历史净值明细表html内容抓取到了本地,现在我们还是需要 解析html,取出相关的值,然后保存为csv文件以便pandas来统计分析。

from bs4 import  BeautifulSoup
import os
import csv

# 使用 BeautifulSoup 解析html内容
def getFundDetailData(html):
    soup = BeautifulSoup(html,"html.parser")

    rows = soup.find("table").tbody.find_all("tr")
    result = []
    for row in rows:
        tds=row.find_all('td')
        result.append({"fcode": '519961'
                       ,"fdate": tds[0].get_text()
                      , "NAV": tds[1].get_text()
                      , "ACCNAV": tds[2].get_text()
                      , "DGR": tds[3].get_text()
                      , "pstate":tds[4].get_text()
                      , "rstate": tds[5].get_text()
                      }
                  )
    return  result


# 把解析之后的数据写入到csv文件
def writeToCSV():
    data_dir = "../htmls/details"
    all_path = os.listdir(data_dir)

    all_result = []
    for path in all_path:
        if os.path.isfile(os.path.join(data_dir,path)):
            with open(os.path.join(data_dir,path),"rb") as f:
                content = f.read().decode("utf-8")
                f.close()
                all_result = all_result + getFundDetailData(content)

    with open("../csv/519961.csv","w",encoding="utf-8",newline="") as f:
        writer = csv.writer(f)
        writer.writerow(['fcode', 'fdate', 'NAV', "ACCNAV", 'DGR', 'pstate', "rstate"])
        for r in all_result:
            writer.writerow([r["fcode"], r["fdate"], r["NAV"], r["ACCNAV"], r["DGR"], r["pstate"], r["rstate"]])

        f.close()
# 执行
writeToCSV()

pandas 排序、索引列

# coding: utf-8

import pandas

if __name__ == "__main__" :

    # 读取csv文件 创建pandas对象
    pd = pandas.read_csv("./csv/519961.csv", dtype={"fcode":pandas.np.str_}, index_col="fdate") # 把 fdate 这列设置为 索引列

    # 根据索引列 倒序
    print(pd.sort_index(ascending=False)) 

既然fdate列设置为了索引列,那么如果根据索引获取呢?

    # 读取csv文件 创建pandas对象
    pd = pandas.read_csv("./csv/519961.csv", dtype={"fcode":pandas.np.str_}, index_col="fdate") # 把 fdate 这列设置为 索引列

    pd.index = pandas.to_datetime(pd.index)
    print(pd["2017-11-29 "]) # 2017-11-29  519961  1.189   1.189  -1.00%  限制大额申购   开放赎回

2、直接指定fdate列就是日期类型

    # 读取csv文件 创建pandas对象
    pd = pandas.read_csv("./csv/519961.csv", dtype={"fcode":pandas.np.str_}, index_col="fdate", parse_dates=["fdate"]) # 指明fdate是日期类型
    print(pd["2017-11-29 "]) # 2017-11-29  519961  1.189   1.189  -1.00%  限制大额申购   开放赎回

打印索引:

print(pd.index) # 打印 索引

可以看出是DatetimeIndex的索引:

DatetimeIndex(['2015-08-13', '2015-08-12', '2015-08-11', '2015-08-10',
               '2015-08-07', '2015-08-06', '2015-08-05', '2015-08-04',
               '2015-08-03', '2015-07-31',
               ...
               '2015-07-02', '2015-07-01', '2015-06-30', '2015-06-29',
               '2015-06-26', '2015-06-25', '2015-06-24', '2015-06-23',
               '2015-06-19', '2015-06-18'],
              dtype='datetime64[ns]', name='fdate', length=603, freq=None)

3、索引的高级用法

 # 取出 2017年7月的 全部数据
    print(pd["2017-07"])

  # 取出 2017年7月到9月的 数据
    print(pd["2017-07":"2017-09"])  

 # 到2015-07的数据
    print(pd[:"2015-07"])

     # 取出截至到2015-07的数据
    # 然后 倒序
    print(pd[:"2015-7"].sort_index(ascending=False))

获取基金日增长率下跌次数最多的月份

    result = pd[pd["DGR"].notnull()] # DGR一定要有值
    # 过滤掉DGR值里的%号,最后取出小于0的值(负数就表示增长率下跌了 )
    result = result[result['DGR'].str.strip("%").astype(pandas.np.float)<0]

    # 按照月份 统计DGR跌的次数
    result = result.groupby(lambda d:d.strftime("%Y-%m")).size()
    # 对DGR跌的次数 倒序,然后取出前面第一个
    result = result.sort_values(ascending=False).head(1)
    print(result) # 2016-04    12  意思就是2016年4月份 是该基金DGR下跌次数最多的月份
【第7章Pandas实战案例与解析 分组聚合】7.404 Pandas深度解析:使用groupby()分组并对指定列数据求和 groupby()# 定义自定义聚合函数# 使用自定义聚合函数print("\n使用自定义聚合函数的结果:") 阅读详情

相关推荐

pandas数据分析 - 分组聚合、分组转换、分组筛选

在使用 pandas 进行数据处理时,分组聚合、分组转换和分组过滤是三个非常重要的概念,它们提供了强大的工具来分析和处理分组数据。

weixin_47552266的博客 3022

Pandas分组、聚合、过滤操作全面解析!

思维导图 >>> import numpy as np >>> import pandas as pd >>> df = pd.read_csv('data/table.csv',index_col='ID') >>> df.head() 一、SAC过程 1. 内涵 SAC指的是分组操作中的split-apply-combi...

OuDiShenmiss的博客 5077

【第7章Pandas实战案例与解析 分组聚合】7.402 Pandas高手进阶:使用groupby()根据单列数据分组求和

groupby()# 定义自定义聚合函数# 使用自定义聚合函数print("\n使用自定义聚合函数的结果:")

1174

Pandas对行/列求和

Pandas对行/列求和

Bianca427的博客 8084

【python Pandas】分组与聚合

除了常见的聚合函数,Pandas 还提供了和apply()方法,允许我们对每个组进行更加灵活的操作。:返回与原始数据框相同形状的结果。它适用于那些需要对每个组进行元素级操作的情况。apply():允许对每个组应用任意函数,返回结果的形状可以不同于原始数据。

m0_62599305的博客 1201

IQA图像质量评价 数据集介绍(LIVE、TID2013、CSIQ、LIVEC、KonIQ-10K)

LIVE、TID2013、CSIQ、LIVEC、KonIQ-10K 数据集介绍

qq_37925923的博客 1万+

第三章. Pandas入门—索引设置

第三章. Pandas入门—索引设置

weixin_45116749的博客 5446

13个GNS3 3.0.5 appliances设备模板镜像合集:IOSv/L2,IOU L2/L3,以及IOS-XE

13个GNS3 appliances设备模板:IOSv/L2,IOU L2/L3,以及IOS-XE合集

haierccc的博客 1069

Python 数据处理 —— pandas 索引和选择

前言 pandas 对象的轴标签信息有很多用途,如 利用标识符来标识数据 能够显式的和自动对齐数据 获取和设置数据子集 在本节中,我们主要关注最后一点,如何对数据切片以及获取和设置数据对象(Series 和 DataFrame)的子集。 1 索引方法 pandas 目前支持三种多轴索引: .loc: 主要是配合标签使用,但是也可与布尔数组一起使用。.loc 会在找不到对应的数据项目时引发 KeyError。 允许的输入有 单个标签,如 5 或 a(注意,这里的 5 是索引标签的值,并不是 0 起始

dxs18459111694的博客 1080

R语言下载包报错?可能是IE浏览器在搞鬼!手把手教你修复(附CRAN镜像选择指南)

本文深入解析了R语言下载包时常见的网络报错问题,特别是Windows系统中因Internet Explorer代理设置导致的连接失败。文章提供了从重置IE配置、排查防火墙到优化CRAN镜像选择的完整解决方案,并附有详细的配置指南和自动化诊断脚本,帮助用户彻底解决R包安装难题。

weixin_29056781的博客 740

Augustus手动安装教程

本文记载了如何结合conda手动安装Augustus

m0_65437087的博客 1255

pandas中的索引index操作总结

pandas中最重要的索引操作,学会index就掌握了pandas的灵魂

wugou2014的博客 4845

深入解析YT8521S千兆以太网PHY芯片的设计与调试要点

本文深入解析了YT8521S千兆以太网PHY芯片的设计与调试要点。重点剖析了硬件设计中的电源方案、RGMII接口电平配置(尤其是1.8V电平方案)以及PCB布局布线等关键细节,并提供了从硬件检查、驱动配置到性能测试的完整调试流程,帮助工程师规避常见陷阱,实现稳定可靠的千兆网络连接。

weixin_29190573的博客 685

python re 筛选数据 求和_Python学习笔记之pandas索引列、过滤、分组、求和功能示例...

本文实例讲述了Python学习笔记之pandas索引列、过滤、分组、求和功能。分享给大家供大家参考,具体如下:前面我们已经把519961(基金编码)这种基金的历史净值明细表html内容抓取到了本地,现在我们还是需要 解析html,取出相关的值,然后保存为csv文件以便pandas来统计分析。from bs4 import BeautifulSoupimport osimport csv# 使用 B...

weixin_39801613的博客 536

centos-stream-9上安装nvidia驱动和cuda-toolkit

centos-stream-9上安装nvidia驱动和cuda-toolkit

qq_19072921的博客 3020

【OpenClaw企业级智能体实战】第16篇:电商“龙虾”掘金记:用OpenClaw实现小红书/抖音/淘宝全自动矩阵运营(2026实测版)

2026年,OpenClaw(小龙虾)已成为电商运营的核心效率工具——从公众号文案3分钟生成到TikTok爆款视频1小时复刻,从多平台内容同步到自动比价加购,彻底重构了电商运营的工作模式。本文基于真实商业案例(元岳科技、TikTok跨境卖家、淘宝MCP工具),系统拆解电商智能体的落地路径:先详解OpenClaw在电商场景的核心原理与变现模式(代部署、模板售卖、轻定制、内容套利),再提供阿里云/本地双部署方案,完整实现小红书/抖音/淘宝的自动化运营(热点抓取、内容生成、多平台分发、数据分析)。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2279

python分组求和_Python学习笔记之pandas索引列、过滤、分组、求和功能示例

本文实例讲述了Python学习笔记之pandas索引列、过滤、分组、求和功能。分享给大家供大家参考,具体如下:前面我们已经把519961(基金编码)这种基金的历史净值明细表html内容抓取到了本地,现在我们还是需要 解析html,取出相关的值,然后保存为csv文件以便pandas来统计分析。from bs4 import BeautifulSoupimport osimport csv# 使用 B...

weixin_39747807的博客 320

【红外技术】DDE算法:HE在红外图像可视化上的应用(附源码)

并且数据一般是以 8 的整数倍的位宽在电子系统中应用,因此大多数的显示器的显示位宽为 8bit,共 256 个灰阶。为了使红外图像可视化,因此需要一种“数据压缩”技术,还需要既可能的不丢失原始图像信息。HE后的图像直方图分布比较均匀离散,图像对比度好。但是HE算法只是适用某些图像,它是将灰度集中区域进行拉伸得到,也会放大该集中区域的噪声,它是一种“不公平”的映射。以下是红外细节增强算法的演示,很明显右边的图像,展现了更多的图像细节,对于小目标的观测非常友好。文章已于2019-12-02修改。

sunwindl91181的博客 911

python索引例子_Python学习笔记之pandas索引列、过滤、分组、求和功能示例

Python学习笔记之pandas索引列、过滤、分组、求和功能示例发布时间:2020-10-01 07:00:18来源:脚本之家阅读:73本文实例讲述了Python学习笔记之pandas索引列、过滤、分组、求和功能。分享给大家供大家参考,具体如下:解析html内容,保存为csv文件//www.jb51.net/article/162401.htm前面我们已经把519961(基金编码)这种基金的历史...

weixin_39588209的博客 123

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Pandas数据处理3:数据合并(join、merge),累计与分组(groupby)

Pandas数据合并(join、merge),累计与分组(groupby) import pandas as pd import numpy as np def make_df(cols, ind): """一个简单的DataFrame""" data = {c: [str(c) + str(i) for i in ind] for c in cols} return pd.DataFrame(data, index=ind) # DataFrame示例 make_df('ABC', r

qhaaha的博客 953

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【第7章Pandas实战案例与解析 分组聚合】7.403 Pandas高手进阶:使用groupby()根据多列数据分组求和

groupby()# 定义自定义聚合函数# 使用自定义聚合函数print("\n使用自定义聚合函数的结果:")

3025

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

pandas数据分析之分组聚合

在数据分析过程中,经常会需要根据某一列或多列把数据划分为不同的组别,然后再对其进行数据分析。本文将介绍pandas的数据分组及分组后的应用如对数据进行聚合、转换和过滤。

学而思(xiejava的blog) 7615

Pandas教程19:groupby分组后,对列中指定关键字的组,进行求和运算。

接下来,我们对筛选后的DataFrame按’朝代列’进行分组,并对每个组的’评分列’或’年龄列’进行求和。Pandas教程07:DataFrame数据的算术运算+逻辑运算+describe()方法+统计函数+自定义函数运算。Pandas教程17:关于json数据转化成DataFrame数据,消除警告提示的方法。---------------pandas数据分析集合---------------Pandas数据化分析,DataFrame行列索引数据的选取,增加,修改和删除操作。

我的Python教程 2008

Pandas(二)—— 索引、分组

Pandas(二): 索引、分组

share16的博客 2692

数据分析之Pandas分组操作总结

↑↑↑关注后"星标"Datawhale每日干货 &每月组队学习,不错过Datawhale干货作者:耿远昊,Datawhale成员Pandas做分析数据,可以...

Datawhale 1万+

【pandas】-7-数据分组处理

pandas 分组数据处理

唐古的博客 1168
上一篇: 实战:抓取某只基金历史净值数据
下一篇: pandas基础:Series、和NumPy里的random.x()
学习笔记666
博客等级 码龄12年 1047粉丝 1369原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值