保存tushare所有股票數據,并對漲停進行分析


import tushare as ts
import pandas as pd
import time
import os
import datetime
# 指定自己要存放文件的絕對路徑
os.chdir('E:/')
pd.set_option('expand_frame_repr', False)
now_time = datetime.date.today()
# 從tushare獲取指定日期
def get_today_all_ts(date):date_now = date# 先獲得所有股票的收盤數據df_close = ts.get_today_all()# 獲得所有股票的基本信息df_basics = ts.get_stock_basics()df_all = pd.merge(left=df_close, right=df_basics, on='name', how='outer')df_all['code'] = df_all['code'].astype(str) + ' '# 保存數據df_all.to_csv(str(date_now) + '_ts.csv', index=False, encoding='gbk')print('%s is downloaded.' % (str(date_now)))print(df_all)return df_allif __name__ == '__main__':get_today_all_ts(date=now_time)

import pandas as pd
import requests
import tushare as ts
import os
import time
import warnings
warnings.filterwarnings('ignore')
pd.set_option('expand_frame_repr', False)
os.chdir('E:/')
date_now = datetime.date.today()
print(str(date_now))
# ====龍虎榜數據# 讀取TDX的每日股票數據
df = pd.read_csv('{}_ts.csv'.format(str(date_now)), encoding='gbk')
df.fillna(0, inplace=True)
df.replace('nan ', 0, inplace=True)
df['timeToMarket'] = pd.to_datetime(df['timeToMarket'])df[['changepercent', 'pe', 'mktcap', 'nmc']] = df[['changepercent', 'pe', 'mktcap', 'nmc']].astype(float)
df['timeToMarket'] = pd.to_datetime(df['timeToMarket'])df['code'] = df['code'].astype(str)  # 轉化成str后,NAN也變成nan str格式
# 添加 交易所 列
df.loc[df['code'].str.startswith('3'), 'exchange'] = 'CY'
df.loc[df['code'].str.startswith('6'), 'exchange'] = 'SH'
df.loc[df['code'].str.startswith('0'), 'exchange'] = 'SZ'# 找出上漲的股票
df_up = df[df['changepercent'] > 0.00]
# 走平股數
df_even = df[df['changepercent'] == 0.00]
# 找出下跌的股票
df_down = df[df['changepercent'] < 0.00]# 找出漲停的股票
limit_up = df[df['changepercent'] >= 9.70]
limit_down = df[df['changepercent'] <= -9.70]# 漲停股數中的未封板股,上市日期小于15天
limit_up_new = limit_up[pd.to_datetime(date_now) - limit_up['timeToMarket'] <= pd.Timedelta(15)]
# 漲停股數中次新股,上市日期小于1年
limit_up_fresh = limit_up[pd.to_datetime(date_now) - limit_up['timeToMarket'] <= pd.Timedelta(365)]# 漲停股數中的未封板股,上市日期小于15天
limit_down_new = limit_down[pd.to_datetime(date_now) - limit_down['timeToMarket'] <= pd.Timedelta(15)]
# 漲停股數中次新股,上市日期小于1年
limit_down_fresh = limit_down[pd.to_datetime(date_now) - limit_down['timeToMarket'] <= pd.Timedelta(365)]print('A股上漲個數: %d, A股下跌個數: %d, A股走平個數: %d。' % (df_up.shape[0], df_down.shape[0], df_even.shape[0]))
print('A股總成交額:%d, 總成交量:%d' % (df['amount'].sum(), df['volume'].sum()))
print('A股平均市盈率:%.2f, 平均流通市值 %.2f 億, 平均總市值 %.2f 億' % (df['pe'].mean(), df['nmc'].mean(), df['mktcap'].mean()))
print('漲停數量:%d 個, 漲停中上市日期小于15天的:%d, 漲停中上市日期小于1年的:%d' % (limit_up.shape[0], limit_up_new.shape[0], limit_up_fresh.shape[0]))
print('跌停數量:%d 個, 漲停中上市日期小于15天的:%d, 漲停中上市日期小于1年的:%d' % (limit_down.shape[0], limit_down_new.shape[0], limit_down_fresh.shape[0]))# 獲取指定列的分析統計結果
def get_output(df, columns='industry', name='_limit_up'):df = df.copy()output = pd.DataFrame()output = pd.DataFrame(df.groupby(columns)['code'].count())output['pe_mean'] = df.groupby(columns)['pe'].mean()output['pe_median'] = df.groupby(columns)['pe'].median()output['nmc_mean'] = df.groupby(columns)['nmc'].mean()output['nmc_median'] = df.groupby(columns)['nmc'].median()output['mktcap_mean'] = df.groupby(columns)['mktcap'].mean()output['mktcap_median'] = df.groupby(columns)['mktcap'].median()output['volume_mean'] = df.groupby(columns)['volume'].mean()output['volume_median'] = df.groupby(columns)['volume'].median()output['amount_mean'] = df.groupby(columns)['amount'].mean()output['amount_median'] = df.groupby(columns)['amount'].median()output.sort_values('code', ascending=False, inplace=True)output.rename(columns={'code': name + '_count'}, inplace=True)return outputfor i in ['industry', 'exchange', 'area']:
# 對漲停的股票分析output_limit_up = get_output(limit_up, columns=i, name='limit_up')print(output_limit_up)
# 對跌停的股票分析output_limit_down = get_output(limit_down, columns=i, name='limit_down')print(output_limit_down)
# 對全量的股票分析output_total = get_output(df, columns=i, name='total')print(output_total)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449619.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449619.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449619.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

重命名 docker 容器名

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 docker 容器&#xff08;服務&#xff09;重命名只要一個命令就可以&#xff1a;docker rename 原容器名 新容器名 如&#xff1a;

vim編輯器常用命令總結

在命令狀態下對當前行用 &#xff08;連按兩次&#xff09;, 或對多行用n&#xff08;n是自然數&#xff09;表示自動縮進從當前行起的下面n行。你可以試試把代碼縮進任意打亂再用n排版&#xff0c;相當于一般IDE里的code format。使用ggG可對整篇代碼進行排版。 vim 選擇文本&…

java操作elasticsearch實現前綴查詢、wildcard、fuzzy模糊查詢、ids查詢

1、前綴查詢&#xff08;prefix&#xff09; //prefix前綴查詢Testpublic void test15() throws UnknownHostException {//1、指定es集群 cluster.name 是固定的key值&#xff0c;my-application是ES集群的名稱Settings settings Settings.builder().put("cluster.name&…

tushare查看a股是否跌到位

#%%#獲取上證指數歷史行情數據#獲取上證指數歷史行情數據 import tushare as ts import pandas as pd # 設置token&#xff0c;只需要在第一次調用或者token失效時設置 # 設置完成后&#xff0c;之后就不再需要這一個命令了 ts.set_token() pro ts.pro_api() df_daily pro.in…

為什么我要轉載文章?

在csdn上很多年&#xff0c;學習了許多&#xff0c;也教了人許多&#xff0c;但最近&#xff0c;大家發現&#xff0c;我轉載了大量文章&#xff0c;而很少原創文章&#xff0c;真正的有水平且自己一個字一個字敲鍵盤出來的&#xff0c;1000字要三四個小時&#xff0c;如果包含…

Docker 從Dockerfile 構建鏡像 :build 命令的用法

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Dockerfile 創建完成后&#xff0c;可以使用 docker build 命令根據 Dockerfile 構建一個鏡像。 1. 首先準備好 Dockerfile : 2. 執行構…

(翻譯).NET應用架構

.NET應用架構 Kalyan Bandarupalli著&#xff0c;hystar翻譯 這個系列文章將幫助.NET開發人員與架構師使用最新的.NET技術設計高效的.NET應用。關于應用架構這方面雖然已有很多文章與書籍&#xff0c;但是對于設計人員理解應用設計的最佳的原則與實踐仍然是具有挑戰性的。這篇…

activity idea編寫bpmn流程文件

idea 的bpmn插件支持不好&#xff0c;1、畫流程圖&#xff0c;注意排他網關流程的條件&#xff0c;2、復制一份xml文件出來&#xff0c;頭部替換&#xff1a;<?xml version"1.0" encoding"UTF-8"?> <definitions xmlns"http://www.omg.org…

tushare寫三因子模型

CAPM模型經歷了大量的實證和應用之后&#xff0c;有證據表明&#xff0c;市場風險溢酬并不能充分解釋個別風險資產的收益率。于是很多研究者開始探索其他的因素&#xff0c;比如公司市值、PE、杠桿比例、賬面市值比等。Fama和French兩個人對于各種因素進行了全面的組合分析&…

Duplicate entry ‘XXX‘ for key

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 報錯如題&#xff1a;Duplicate entry XXX for key 意思是說有唯一約束&#xff0c;所以不能重復。 而我的情況是&#xff0c;有兩個表…

list c++template

以一個現成的模板實現了線性表的順序結構實現&#xff0c;VC6.0調試OK 請大家以開源的方式來完善這個算法 &#xff0c;以跟貼方式來添加代碼 請大家往這個下面繼續添加完整的可以運行的線性表的順序結構實現代碼 /* 線性表的順序結構實現&#xff0c;數組C實現法&#xff0c;V…

聊聊composer.lock

composer.lock 即鎖定文件 其中會存在項目中所有的依賴包&#xff0c;方便協同合作時都得到同樣的以來版本 composer install 命令從當前目錄讀取 composer.json 文件&#xff0c;處理依賴關系&#xff0c;并把依賴安裝到 vendor 目錄下。 如果當前目錄下存在 composer.lock 文…

如何保證MongoDB的安全性?

上周寫了個簡短的新聞《MongoDB裸奔&#xff0c;2億國人求職簡歷泄漏&#xff01;》&#xff1a; 根據安全站點HackenProof的報告&#xff0c;由于MongoDB數據庫沒有采取任何安全保護措施&#xff0c;導致共計202,730,434份國人求職簡歷泄漏。然后很多人評論說MongoDB躺槍了。 …

LXC是什么

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。Linux Container容器是一種內核虛擬化技術&#xff0c;可以提供輕量級的虛擬化&#xff0c;以便隔離進程和資源。LXC為Linux Container的簡…

C++ 標準庫 vector list map使用方法

[cpp] view plaincopyList&#xff08;鏈表&#xff09; List將元素按順序儲存在鏈表中. 與 向量(vectors)相比, 它允許快速的插入和刪除&#xff0c;但是隨機訪問卻比較慢.list對象函數 assign() 給list賦值 back() 返回最后一個元素 begin() 返回指向第一個元素的迭代器…

導航守衛

導航守衛 to 準備跳轉到哪個頁面 from 從哪個頁面中離開 next 函數 全局守衛 router.beforeEach((to,from,next) > {if(to.path /login || to.path /register){    next();}else{    alert(先登錄)    next(/login)} }) 組件守衛 data () {  return{   …

Django中使用Pagination的分頁范例源碼

將做工程過程重要的內容做個珍藏&#xff0c;下面代碼內容是關于Django中使用Pagination的分頁范例的代碼。 from django.core.paginator import Paginatorobjects [john, paul, george, ringo]p Paginator(objects, 2) p.count4p.num_pages2p.page_range[1, 2] page1 p.pag…

Docker:集裝箱式“運輸”在軟件上的實現

Docker是由PaaS提供商dotCloud在2013年年初創建的一款開源應用引擎&#xff0c;Docker可以自動將任何應用打包成輕量、可移植、自包涵的容器引擎。開發者構建的應用可以一次構建全平臺運行&#xff0c;包括本地開發機器&#xff0c;生產環境&#xff0c;虛擬機和云等。 Docker基…

CAMP選股

挑選五只股票&#xff1a;萬科A、中國平安、貴州茅臺、萬華化學和科大訊飛&#xff0c;然后我們以滬深300作為市場基準。import pandas as pd import tushare as ts # 獲取數據 pro ts.pro_api() wanke pro.daily(ts_code000002.SZ, start_date20170101) pingan pro.daily(t…

大二下周總結(三)

記錄時間第三周所花時間&#xff08;包括上課&#xff09;13h代碼行500博客量2所了解到的知識點html java-script java本周用在練習代碼的時間自己感覺還可以&#xff0c;由于在第二周課堂練習后覺得自己有許多不足&#xff0c;所以有了必須奮進的壓力。 除了編寫代碼能力的提高…