1. 程式人生 > >pandas 索引列、過濾、分組、求和

pandas 索引列、過濾、分組、求和

解析html內容,儲存為csv檔案

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下跌次數最多的月份

相關推薦

pandas 索引過濾分組求和

解析html內容,儲存為csv檔案 from bs4 import BeautifulSoup import os import csv # 使用 BeautifulSoup 解析html內容 def getFundDetailData(html)

linux開機啟動過程PATH過濾一級目錄cd的參數ls -lrt命令切割日誌

linux 開機啟動過程 cd ls 第二波命令正向我方來襲 :開機啟動過程、PATH、過濾一級目錄、cd的參數、ls -lrt、命令切割日誌 1.1 linux開機啟動過程1.1.1 開機自檢(BIOS)-- MBR引導 -- GRUB菜單 -- 加載內核(kernel)-- 運

學習筆記day64-----oracle-sql標準的表連線集合運算函式和分組子查詢表操作

1、sql標準中的表連線 1.1、內連線 語法: select 欄位列表 from 表1 [inner] join 表2 on 關聯條件; --三表

04 -pandas索引的堆(行列操作,交換行列)聚合操作(求和最大值最小值平均值等)

引入模組 import pandas as pd from pandas import Series,DataFrame import matplotlib.pyplot as plt 建立示例DataFrame # 用作案例 不要刪 !!! data=np.random.ra

java8 快速實現List轉map 分組過濾等操作

利用java8新特性,可以用簡潔高效的程式碼來實現一些資料處理。 定義1個Apple物件: public class Apple { private Integer id; private String name; private BigDecimal mone

java8快速實現分組過濾list轉map

public class TestEntity { private String c1; private String c2; public TestEntity(){} public TestEntity(String a,String b){ thi

pandas 中DataFrame使用:資料標準化資料分組日期轉換日期格式化日期抽取

1資料標準化 將資料按比例縮放,使之落入到特定區間,一般我們使用0-1標準化。公式如下: X∗=x−minmax−minX∗=x−minmax−min #導包 import pandas; from pandas import read_csv df=read_c

java8 分組List轉map過濾排序等

定義Test物件: public class Test { private Integer id; private String name; private BigDecimal money; public Test(){}

MYSQL基礎上機練習題(二)對資料指定查詢條件查詢查詢結果排序聚集函式查詢分組統計查詢

實驗目標:1.掌握指定列或全部列查詢2.掌握按條件查詢3.掌握對查詢結果排序4.掌握使用聚集函式的查詢5.掌握分組統計查詢一、請完成書中實驗7.1,並完成以下問題。1.查詢所有學生的姓名及其出生年份回答以下問題:SQL語句請截圖① 觀察查詢的資料,若年齡不為空是否能求出出生年

pandas如何去掉過濾資料集中的某些值或者某些行?

摘要在進行資料分析與清理中,我們可能常常需要在資料集中去掉某些異常值。具體來說,看看下面的例子。0.匯入我們需要使用的包import pandas as pdpandas是很常用的資料分析,資料處理的包。anaconda已經有這個包了,純淨版python的可以自行pip安裝。

Telerik Kendo UI 那點事【3】GridView MVVM前後臺聯動服務端分頁分組過濾(查詢)排序

中文化之後,我們開始具體使用kendo ui元件。經常開發系統的我,通常從最常用的控制元件用起,那就是表格控制元件GridView!現在的軟體系統基本上就是標籤框、文字框、選擇框、樹、表格堆砌而成。因此接觸任何一種UI元件的時候,我通常都最為關注GridView,表格控制元

Android 仿美團選擇城市微信通訊錄餓了麼點餐列表的導航懸停分組索引列表

SuspensionIndexBar簡介:快速實現分組懸停、右側索引導航聯動 列表。如 美團選擇城市介面,微信通訊錄介面、餓了麼點餐介面等。SuspensionIndexBar相關博文:喜歡隨手點個star 多謝在哪裡找到我:我的github:我的CSDN部落格:我的稀土掘金

如何使用mysql 命令 檢視mysql表大小資料大小索引大小

select * from information_schema.TABLES  where information_schema.TABLES.TABLE_SCHEMA='databasename' and information_schema.TABLES.T

Pandas:DataFrame數據的更改插入新增的和行

core 參數 tro 語法 columns ont 對象 需要 mage 一、更改DataFrame的某些值 1、更改DataFrame中的數據,原理是將這部分數據提取出來,重新賦值為新的數據。 2、需要註意的是,數據更改直接針對DataFrame原數據更改,操作無法

Oracle之查詢索引索引等資訊

用user_indexes和user_ind_columns系統表檢視已經存在的索引 user_indexes:     系統檢視存放是索引的名稱以及該索引是否是唯一索引等資訊。 user_ind_column:  系統檢視存放的是索引名稱,對應的表和列等。 完整

java8--List轉為Map分組過濾求和等操作

轉自:https://www.cnblogs.com/yangweiqiang/p/6934671.html利用java8新特性,可以用簡潔高效的程式碼來實現一些資料處理~定義1個Apple物件:public class Apple { private Integer

sql 行轉分組排序,

select * from (select concat(t2.supplier,'(',t1.from_addr,')') 供應商(礦點),t3.goods_name 貨品,count(t1.id) 磅總單數,sum(case when t1.status='1'then

利用Pandas進行資料分析(3)——統計處理缺失值層次化索引

注:此係列參考了樑斌老師的課件和《利用Python進行資料分析》一書。 import numpy as np import pandas as pd from pandas import DataFrame,Series df_obj

Pandas-Cookbook】04:分組聚集

# -*-coding:utf-8-*- # by kevinelstri # 2017.2.16 # --------------------- # Chapter 4: Find out on which weekday people bike th