1. PYthon遍歷語句求指導,如何通過python下載某時期所有股票日線信息然後存文件
你可以去官網看看怎麼去做,
2. Pandas - 數據透視表
在正式介紹數據透視表 Pivot Table 之前,我們不妨通過一個列子,來感受一下 Pivot Table 的魅力。
首先從 excel 讀取一份數據集:數據集統計了2020年1月-6月公司各部門制定的業績目標以及實際完成業績。
使用 Pandas 讀取上述數據集:
下面,我們新增一列,計算完成度:
接下來,假設我們需要統計各時間段下每個部門的業績完成度。這里,就需要用到我們的數據透視表 pivot table 了~
df.pivot_table 的計算結果,就是以時間作為索引,以部門作為列,填充的值則是完成度的平均值。
至此,數據透視表的概念也就清晰了~
上述匯總的數據還是有點多,可以使用 df.resample('M') 對日期時間索引按照 「月」 來進行重采樣:
通常,在 Excel 中對於數據透視表的匯總結果,我們也會繪制相應的數據透視圖來直觀地反映數據。在 Pandas 中也是可以輕松繪圖的:
此外,還可以對數據透視表做進一步的統計。比如計算各部門上半年的平均完成度:
上半年每個月份公司整體的完成度:
讀取數據集:
不同性別的乘客在不同船艙等級支付的船票費用平均值:
匯總統計結果:
aggfunc 指除了對匯總之後的結果進行統計的方法,默認即 mean 求平均。可以指定其他統計方法,比如獲取不同性別的乘客在不同船艙等級支付船票花費的最大值:
匯總統計結果:
指定 aggfunc='count' 可以實現對不同性別乘客在不同船艙等級的分布:
匯總統計結果:
進行計數時,也可以使用專用的方法 pd.crosstab :
對於不同船艙等級來說,男性和女性的獲救概率:
匯總統計結果:
分別統計未成年/成年人中男性和女性獲救的概率:
匯總統計結果:
3. Pandas數據探索分析,分享兩個神器
在使用 pandas 進行數據分析時,進行一定的數據 探索 性分析(EDA)是必不可少的一個步驟,例如常見統計指標計算、缺失值、重復值統計等。
使用 df.describe 等函數進行 探索 當然是常見操作,但若要進行更完整、詳細的分析缺則略顯不足。
本文就將分享兩個用於數據 探索 的 pandas 插件。
首先要介紹的是 pandas_profiling ,它擴展了 pandas DataFrame 的功能,這也是在之前多篇文章中提到的插件。
只需使用 pip install pandas_profiling 即可安裝,在導入數據之後使用 df.profile_report 一行命令即可快速生成描述性分析報告
可以看到,除了之前我們需要的一些描述性統計數據,該報告還包含以下信息:
進一步我們還以將該報告保存為 html 格式,方便後續的查看,感興趣的讀者可以自行嘗試。
第二個值得一用的是 sweetviz ,同樣是一個開源 Python 庫,可生成美觀、高密度的可視化,只需兩行代碼即可啟動 EDA 。
該插件圍繞快速可視化目標值和比較數據集而構建。它的目標是幫助快速分析目標特徵、訓練與測試數據以及其他此類數據特徵任務。
安裝方法同上,執行 pip install sweetviz 即可。使用方法也是類似,導入數據後只需兩行代碼即可輸出分析報告
和 pandas_profiling 不一樣的是,現在我們只能得到一個 html 文件,打開即可看到相關 EDA 報告
可以看到,自動生成的報告主要有以下幾個部分
從上面的介紹我們也能看出,兩個 EDA 的插件側重點有所不同,我們在實際使用時也應該根據數據特徵與分析目標靈活使用!
4. pandas數據分析-常用命令
order = ['id','msg','reason']
df = df[order]
常用:
df.rename(columns={'A':'a','B':'b'},inplace=True)(inplace說明修改原數據)
高級用法示例:大寫轉成小寫,去除頭尾空格(strip)用 替換空格
df.rename(columns=lambda x:x.strip().lower().replace(' '," "),inplace=True)
檢查冗餘值 df.plicated()
刪除冗餘值 df.drop_plicates(inplace=True)
df.reset_index()
test=pd.DataFrame(msg)
lambda x: 1 if x>0 else 0
df = pd.concat([df,msg],axis=0,ignore_index=True)
pd.merge(df1,df2) 相當於sql, join的左連接
str[0:4] #截取第一位和第四位的字元
str[:-1] #截取從開頭到倒數第一位的字元
for i,val in range(len(temp)):
for i,val in enumerate(temp):
df[df.isnull().values==True].drop_plicates()
append()向列表尾部追加一個元素,只佔一個索引位
extend()像列表尾部追加一個李彪,將列表2中 的每個元素都追加進列表1 .
str=','.join(str(i)for i in list)
eval(str)
df1 = df2.groupby(['ip']).aggregate(lambda x:set(x))
for i in data:
def timeStamp(timeNum):
timeStamp = float(timeNum/1000)
timeArray = time.localtime(timeStamp)
otherStyleTime = time.strftime("%Y.%m.%d", timeArray)
return otherStyleTime
df= df.astype('str')
import json
with open('psth','r') as load_f:
load_dict = json.load(load_f)
ioc_list=[]
for k,v in load_dict.items():
5. 怎樣用python提取不同股票csv里特定時間段的數據
用pandas庫,
import pandas as pd
data = pd.read_csv('train.csv')
train_data = data.values[0:TRAIN_NUM,1:]
train_label = data.values[0:TRAIN_NUM,0]
study.163.com/course/courseMain.htm?courseId=1000035
機器學習正好講了這個手寫識別的例子!
6. 解決 pandas_datareader 無法獲取雅虎財經數據的問題
pandas_datareader 是重要的 pandas 相關包,原來是 pandas.io.data 方法,用於獲取介面數據,比如雅虎財經上的數據或者美聯儲路易斯安娜分行的數據,但是在最近版本(比如 pandas 0.20)中 pandas.io.data 的方法獨立出來稱為一個新的包 pandas_datareader 。
雅虎財經和谷歌財經的介面變換頻繁。如果用 pip install pandas_datareader ,已經無法得到雅虎財經。
pandas_datareader github Issuse #315 針對的就是雅虎財經介面無法訪問的問題, gusutabopb 在 5月21日進行了成功修正,並提供了他修正後的 pandas_datareader 新版本。
該修正版本的安裝方法是
安裝以後測試獲取 google 的股票數據成功。
參考:
Issues with the data reader fetching yahoo finance #315
Error with pulling data from Yahoo Finance
7. 為什麼pandas有國內股票數據
都是公開發行上市的股票,當然會有的,Pandas是數據分析工具包
TuShare是國內股票數據抓取工具,除了股票的實時和歷史數據,還有基本面數據,加上自然語言處理(比如情緒分析),或者機器學習,就比較有趣了。
8. pandas數據整理
一、drop()方法
1、df.drop()刪除一行或一列
print(df.isnull().sum()) #查看空值匯總
df.drop(labels=None,index=None,columns=None) #labels參數指定要刪除的行或列的名字,index參數指定要刪除的行,columns參數指定要刪除的列,用列表給定。
df.drop(labels=[0,2],axis=0) #刪除1-2行。
df.drop(labels=[0,2],axis=1) #刪除1-2列。
df.drop(['列標簽'],axis=1)#刪除指定列標簽的列,如果是單列可以直接用列名。
df.drop(['航標簽'])#刪除指定行標簽的行,如果是單行可以直接用行名。
2、axis參數值有兩個,0表示刪除行,為默認值;1表示刪除列。
3、inplace參數值有兩個,False表示返回一個新值,不修改原數據,為默認值;Ture表示在原來的數據基礎上修改,除非確認要修改原數據,要慎用。
4、刪除指定條件的行
(1)按行遍歷指定符合條件的行索引
index_list=[]
for index, row_data in df.interrows():
if row_data['列標簽']==『指定條件』:
index_list.append(index)
(2)刪除指定行
df1=df.drop(index_list,axis=0)
df1
(3)或者用列表表達式
index_list=[index for index, row_data in df.interrows() if row_data['列標簽']==『指定條件』]
df1=df.drop(index_list,axis=0)
df1
二、空值處理dropna()
1、刪除整行或列
df1=df.dropna(axis=0)或df.dropna() #刪除含有NAN的行,不添加axis參數默認刪除行。
df2=df.dropna(axis=1) #刪除含有NAN的列。
2、對空值進行填充
(1)使用常數填充
df3=df.fillna(0)
(2)用列的平均值填充
df4=df.fillna(df.mean())
(3)用列的前一個數值填充
df5=df.fillna(method=ffill,axis=1)
(4)用行的前一個數值填充
df5=df.fillna(method=ffill,axis=0)
三、移除重復數據
1、參數說明
df.drop_plicates()方法的subset參數為所有列(默認),後指定列;keep參數為first(默認)、last和False;inplace參數為False(默認)和Ture。
df6=df.plicated()#返回值為Ture和False
2、刪除所有列都相同的行
df7=df.drop_plicates() #刪除所有列都相同的行,最常用的方式。
df.reset_index(drop=True) #重建索引
3、刪除指定列值相同的行
df7=df.drop_plicates(subset=['列名'],keep='first',inplace=False)#列名表示的是對比的列
df.reset_index(drop=True) #重建索引
四、計算兩列值得到一新列值
1、使用列標簽篩選,直接計算
df['新列標簽']=df['第一列標簽']*df['第一列標簽']
2、使用位置索引遍歷,每對值單獨計算
for i in range(len(df['第一列標簽'])):
df['新列標簽'].iloc[i]=df['第一列標簽'].iloc[i]*df['第一列標簽'].iloc[i]
9. pandas分組統計怎麼加數據
pandas分組統計加數據方法:
1、分組使用聚合函數做數據統計。
2、遍歷groupby的結果理解執行流程。pandas分組是一個常用的功能,如分別統計每個月的股票波動率、每個部門的人數、每個季度的利潤等等。
10. 數據分析—Pandas刪除數據的幾種情況
開始之前,pandas中DataFrame刪除對象可能存在幾種情況
本文就針對這四種情況探討一下如何操作。
模擬了一份股票交割的記錄。
也可以根據行號刪除記錄,比如刪除第三行
注意,這個辦法其實不是按照行號刪除,而是按照索引刪除。如果index為3,則會將前4條記錄都刪除。這個方法支持一個范圍,以及用負數表示從末尾刪除。
本例其實是篩選,如果需要保留,可以將篩選後的對象賦值給自己即可。
如果想取包含某些字元的記錄,可以去掉~
完成~
希望本文的內容對大家的學習或者工作能帶來一定的幫助,每天進步一點點,加油。