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)-- 運
第4章 樸素貝葉斯(文字分類、過濾垃圾郵件、獲取區域傾向)
貝葉斯定理: P ( c
學習筆記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