Python学习笔记之熊猫索引列,过滤,分组,求和功能示例

  

本文实例讲述了Python学习笔记之熊猫索引列,过滤,分组,求和功能。分享给大家供大家参考,具体如下:

  

//www.jb51.net/article/162401.htm   

前面我们已经把<强> 这种基金的历史净值明细表html内容抓取到了本地,现在我们还是需要解析html,取出相关的值,然后保存为csv文件以便<代码>熊猫>         从bs4进口BeautifulSoup   进口操作系统   导入csv   #使用BeautifulSoup解析html内容   def getFundDetailData (html):   汤=BeautifulSoup (html、“html.parser”)   行=soup.find(“表”).tbody.find_all (tr)   结果=[]   一行的行:   tds=row.find_all (td)   结果。追加({“fcode”:“519961”   “fdate”: tds [0] .get_text ()   “导航”:tds [1] .get_text ()   “ACCNAV”: tds [2] .get_text ()   “DGR”: tds [3] .get_text ()   “pstate”: tds [4] .get_text ()   “rstate”: tds [5] .get_text ()   }   )   返回结果   #把解析之后的数据写入到csv文件   def writeToCSV ():   data_dir=" . ./html/细节”   all_path=os.listdir (data_dir)   all_result=[]   all_path的路径:   如果os.path.isfile (os.path.join (data_dir、路径):   张开(os.path.join (data_dir路径),rb) f:   内容=f.read () .decode (“utf - 8”)   f.close ()   all_result=all_result + getFundDetailData(内容)   张开(“. ./csv/519961. csv”、“w”,编码=皍tf - 8”,换行符=" ")f:   作家=csv.writer (f)   作家。writerow ([‘fcode’,‘fdate’,‘导航’,“ACCNAV”、“DGR”,“pstate”,“rstate”))   在all_result r:   作家。writerow ([[“fcode”], r (“fdate”), r(“导航”),r (“ACCNAV”), r (“DGR”), r (“pstate”), r [“rstate”]])   f.close ()      之前            #执行   writeToCSV ()      之前      

        utf - 8编码:   进口熊猫   if __name__==癬_main__”:   #读取csv文件创建熊猫对象   pd=pandas.read_csv (”。/csv/519961。csv”, dtype={“fcode”: pandas.np。str_}, index_col=癴date”) #把fdate这列设置为索引列   #根据索引列倒序   print (pd.sort_index(提升=False))      之前      

既然<代码> fdate>         #读取csv文件创建熊猫对象   pd=pandas.read_csv (”。/csv/519961。csv”, dtype={“fcode”: pandas.np。str_}, index_col=癴date”) #把fdate这列设置为索引列   pd。指数=pandas.to_datetime (pd.index)   打印(pd(“2017-11-29”)) # 2017-11-29 519961 1.189 1.189 -1.00%限制大额申购开放赎回      之前      

2,直接指定<代码> fdate>         #读取csv文件创建熊猫对象   pd=pandas.read_csv (”。/csv/519961。csv”, dtype={“fcode”: pandas.np。str_}, index_col=癴date parse_dates=[" fdate "]) #指明fdate是日期类型   打印(pd(“2017-11-29”)) # 2017-11-29 519961 1.189 1.189 -1.00%限制大额申购开放赎回      之前      

打印索引:

        打印(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,长度=603,频率=没有)      之前      

3,索引的高级用法

        #取出2017年7月的全部数据   打印(pd(“2017 - 07年”))   #取出2017年7月到9月的数据   打印(pd(“2017 - 07年”:“2017 - 09年))   #到2015 - 07年的数据   打印(pd[:“2015 - 07年”)   #取出截至到2015 - 07年的数据   #然后倒序   打印(pd [:“2015 - 7] .sort_index(提升=False))      之前      

        结果=帕金森病(pd (“DGR”.notnull ()] # DGR一定要有值   #过滤掉DGR值里的%号,最后取出小于0的值(负数就表示增长率下跌了)   结果=结果(结果[' DGR的].str.strip (“%”) .astype (pandas.np.float) & lt; 0]   #按照月份统计DGR跌的次数   结果=结果。groupby(λd: d.strftime (“% Y - % m”)) .size ()   #对DGR跌的次数倒序,然后取出前面第一个   结果=result.sort_values(升序=False) .head (1)   打印(结果)# 2016 - 04 12意思就是2016年4月份是该基金DGR下跌次数最多的月份      

Python学习笔记之熊猫索引列,过滤,分组,求和功能示例