日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

成为华尔街金融巨鳄第三课: Pandas2:学会使用Pandas-DataFrame

發布時間:2024/3/24 编程问答 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 成为华尔街金融巨鳄第三课: Pandas2:学会使用Pandas-DataFrame 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

成為華爾街金融巨鱷第三課:

Pandas2:學會使用Pandas-DataFrame

import pandas as pd import numpy as np

一、DataFrame簡介和創建:二維數據對象

可以簡單理解為excel表格

創建方法一:利用字典創建

pd.DataFrame({"one":[1,2,3],'two':[4,5,6]}) onetwo012
14
25
36

和Series類似,我們可以為行指定索引

pd.DataFrame({"one":[1,2,3],'two':[4,5,6]},index=['a','b','c']) onetwoabc
14
25
36

創建方法二:利用Series創建

pd.DataFrame({'one':pd.Series([1,2,3],index=['a','b','c']),'two':pd.Series([1,2,3,4],index=['d','c','a','b'])}) onetwoabcd
1.03
2.04
3.02
NaN1

可見DataFrame在創建時會自動進行索引對其

創建方法三:利用csv創建

pd.read_csv('test.csv') abc012
123
246
369

保存到csv

df = pd.DataFrame({'one':pd.Series([1,2,3],index=['a','b','c']),'two':pd.Series([1,2,3,4],index=['d','c','a','b'])}) df onetwoabcd
1.03
2.04
3.02
NaN1
# 保存到csv df.to_csv('test2.csv')

二、DataFrame常見屬性

1、index、columns和vlues屬性

作用:index用來獲取 # 行 # 索引 ; columns獲取# 列 # 屬性;values用來獲取值 # 數組

df = pd.DataFrame({'one':pd.Series([1,2,3],index=['a','b','c']),'two':pd.Series([1,2,3,4],index=['d','c','a','b'])}) df onetwoabcd
1.03
2.04
3.02
NaN1
# index屬性 df.index Index(['a', 'b', 'c', 'd'], dtype='object') # columns屬性 df.columns Index(['one', 'two'], dtype='object') # values屬性 df.values array([[ 1., 3.],[ 2., 4.],[ 3., 2.],[nan, 1.]])

2.T屬性

作用:轉置

df.T abcdonetwo
1.02.03.0NaN
3.04.02.01.0

3.describe()方法

作用:返回詳細信息

df.describe() onetwocountmeanstdmin25%50%75%max
3.04.000000
2.02.500000
1.01.290994
1.01.000000
1.51.750000
2.02.500000
2.53.250000
3.04.000000
count: 該列數據共有多少條 mean:該列數據平均值 std:該列數據標準差 min:該列數據最小值 25%:該列數據從小到大25%位置上的數 50%:該列數據中位數 75%:該列數據從小到大75%位置上的數 max:該列數據最大值

三、DataFrame索引和切片

df = pd.DataFrame({'one':pd.Series([1,2,3],index=['a','b','c']),'two':pd.Series([1,2,3,4],index=['d','c','a','b'])}) onetwoabcd
1.03
2.04
3.02
NaN1

df取值可以采用df[x][y]的方法取值,表示取x列的y行,注意對比numpy,這里前一個中括號內表示列

eg:取第one行第a列的1.0

df['one']['a'] 1.0

雖然這樣可以輕松地取到想要的值,但是一般情況下,我們不采取這種方式,因為會出現類似于Series整數索引的問題

于是,一般情況下我們還是使用loc和iloc來進行取值

用loc方式取值,在這種情況下逗號前表示行,逗號后表示列,和numpy類似

df.loc['a','one'] 1.0

!特別注意:DataFrame事實上是由n個Series對象所組成的,因此可以通過列索引直接取到某一列,卻不能通過行索引直接取到某一行,想要獲取某一行可以采取切片的方式

# 通過列名直接獲取某一列 df['one'] a 1.0 b 2.0 c 3.0 d NaN Name: one, dtype: float64 # 嚴禁通過行索引獲取某一行 df['a'] ---------------------------------------------------------------------------KeyError Traceback (most recent call last)c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)2894 try: -> 2895 return self._engine.get_loc(casted_key)2896 except KeyError as err:pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()KeyError: 'a'The above exception was the direct cause of the following exception:KeyError Traceback (most recent call last)<ipython-input-34-9637ce7feee6> in <module>1 # 嚴禁通過行索引獲取某一行 ----> 2 df['a']c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)2904 if self.columns.nlevels > 1:2905 return self._getitem_multilevel(key) -> 2906 indexer = self.columns.get_loc(key)2907 if is_integer(indexer):2908 indexer = [indexer]c:\users\lenovo\appdata\local\programs\python\python37\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)2895 return self._engine.get_loc(casted_key)2896 except KeyError as err: -> 2897 raise KeyError(key) from err2898 2899 if tolerance is not None:KeyError: 'a' # 通過切片獲取某一行 df.loc['a',:] one 1.0 two 3.0 Name: a, dtype: float64
根據我的嘗試,切片獲取:可以省略寫成df.loc[‘a’,],甚至可以省略逗號df.loc[‘a’],但是這與上面的注意違背所以盡量不要省略逗號
df = pd.DataFrame({'one':pd.Series([1,2,3],index=['a','b','c']),'two':pd.Series([1,2,3,4],index=['d','c','a','b'])}) df onetwoabcd
1.03
2.04
3.02
NaN1

行/列索引部分除了常規索引,還可以是切片、布爾值索引、花式索引任意搭配

eg:

# 花式索引和切片搭配 df.loc[['a','b'],'one':'two'] onetwoab
1.03
2.04
注意點回顧:和Series一樣,在使用鍵索引時,是左閉右也閉的區間

四、數據對齊與缺失值處理

df = pd.DataFrame({'one':pd.Series([1,2,3],index=['a','b','c']),'two':pd.Series([1,2,3,4],index=['d','c','a','b'])}) df onetwoabcd
1.03
2.04
3.02
NaN1
df2 = pd.DataFrame({'two':[1,2,3,4],'one':[5,6,7,8]},index = ['d','c','a','b']) df2 twoonedcab
15
26
37
48
df + df2 onetwoabcd
8.06
10.08
9.04
NaN2

DataFrame遵循數據對齊的原則,在運算時,會行與列都分別對齊

df onetwoabcd
1.03
2.04
3.02
NaN1

缺失值處理方法1:缺失值填充

# fillna(x)為缺失值填入x df.fillna(0) onetwoabcd
1.03
2.04
3.02
0.01

缺失值處理方法2:缺失值刪除

1.dropna()方法

# dropna()刪除存在缺失值所在行 df.dropna() onetwoabc
1.03
2.04
3.02

2.dropna()方法的how參數

df onetwoabcd
1.03
2.04
3.02
NaN1
df.loc['c','two'] = np.nan df.loc['d','two'] = np.nan df onetwoabcd
1.03.0
2.04.0
3.0NaN
NaNNaN
# how=‘all’規定了只有該行全部為空才刪除,默認how的參數為any,即只要存在缺失值就刪除該行 df.dropna(how = 'all') onetwoabc
1.03.0
2.04.0
3.0NaN

3.dropna()方法的axis參數

axis=0表示以行為單位,axis=1表示以列為單位# df.dropna(axis=1)表示將存在缺失值的列刪除,默認axis=0

df2 twoonedcab
15
26
37
48
df2.loc['a','two'] = np.nan df2 twoonedcab
1.05
2.06
NaN7
4.08
# df.dropna(axis=1)表示將存在缺失值的列刪除,默認axis=0 df2.dropna(axis=1) onedcab
5
6
7
8
#另外,df中一樣提供了isnull()和notnull()使用方法和Series完全一致 df2.isnull() twoonedcab
FalseFalse
FalseFalse
TrueFalse
FalseFalse

五、DataFrame常見函數

1.求平均值

df = df2 df twoonedcab
1.05
2.06
NaN7
4.08
df.mean() two 2.333333 one 6.500000 dtype: float64

mean():mean方法將忽略缺失值,計算出每一列的平均值,并返回一個Series對象

axis參數:axis=1可以按行求平均值 默認為0按列求平均值

df.mean(axis=1) d 3.0 c 4.0 a 7.0 b 6.0 dtype: float64
另外,sum,std等方法和mean()類似

2.按值排序 : sort_values()

df twoonedcab
1.05
2.06
NaN7
4.08
# 按two這一列的值排序 df.sort_values(by = 'two') twoonedcba
1.05
2.06
4.08
NaN7
# 按two這一列的值降序排序 df.sort_values(by = 'two',ascending=False) twoonebcda
4.08
2.06
1.05
NaN7
# 按d這一行降序排序 df.sort_values(by = 'd',ascending=False,axis=1) onetwodcab
51.0
62.0
7NaN
84.0

總結:

1.df.sort_values()用以按值排序
2.by參數:指定按哪一列(行)排序
3.ascending參數:指定升序或降序排序,True為升序,False為降序,默認為True
4.axis參數:指定按行/列排序,axis=0按列排序,axis=1按行排序,默認為0,如果by的參數為行標簽,則必須賦值axis=1
5.關于缺失值NaN:如果存在缺失值,則缺失值不參與排序,統一放在最后面

3.按列排序 : sort_index()

df twoonedcab
1.05
2.06
NaN7
4.08
df.sort_index() twooneabcd
NaN7
4.08
2.06
1.05
# 降序排序 df.sort_index(ascending = False) twoonedcba
1.05
2.06
4.08
NaN7
# 按one two列的順序排序 df.sort_index(ascending = True , axis = 1) onetwodcab
51.0
62.0
7NaN
84.0

sort_index僅有ascending,axis兩個參數使用方法和按值排序類似

六、OMG太牛辣——DataFrame時間序列

1.pandas時間對象處理

# pd.to_datetime(list)支持批量的字符串轉化為時間對象,并且支持各式各樣的時間書寫方式 pd.to_datetime(["2021-01-10","2021/MAY/1"]) DatetimeIndex(['2021-01-10', '2021-05-01'], dtype='datetime64[ns]', freq=None)

2.pandas時間對象自動生成

函數pd.date_range()的start,end/periods參數說明

start:開始時間 end:結束時間 periods:可以指定start不指定end改指定periods,指的是生成從start開始的periods天時間,同樣的,可以指定end不指定start改指定periods # 用start和end生成時間 pd.date_range('2021-01-01','2021-03-01') DatetimeIndex(['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04','2021-01-05', '2021-01-06', '2021-01-07', '2021-01-08','2021-01-09', '2021-01-10', '2021-01-11', '2021-01-12','2021-01-13', '2021-01-14', '2021-01-15', '2021-01-16','2021-01-17', '2021-01-18', '2021-01-19', '2021-01-20','2021-01-21', '2021-01-22', '2021-01-23', '2021-01-24','2021-01-25', '2021-01-26', '2021-01-27', '2021-01-28','2021-01-29', '2021-01-30', '2021-01-31', '2021-02-01','2021-02-02', '2021-02-03', '2021-02-04', '2021-02-05','2021-02-06', '2021-02-07', '2021-02-08', '2021-02-09','2021-02-10', '2021-02-11', '2021-02-12', '2021-02-13','2021-02-14', '2021-02-15', '2021-02-16', '2021-02-17','2021-02-18', '2021-02-19', '2021-02-20', '2021-02-21','2021-02-22', '2021-02-23', '2021-02-24', '2021-02-25','2021-02-26', '2021-02-27', '2021-02-28', '2021-03-01'],dtype='datetime64[ns]', freq='D') # 用strat和periods生成時間,periods不能省略 pd.date_range('2021-01-01',periods=60) DatetimeIndex(['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04','2021-01-05', '2021-01-06', '2021-01-07', '2021-01-08','2021-01-09', '2021-01-10', '2021-01-11', '2021-01-12','2021-01-13', '2021-01-14', '2021-01-15', '2021-01-16','2021-01-17', '2021-01-18', '2021-01-19', '2021-01-20','2021-01-21', '2021-01-22', '2021-01-23', '2021-01-24','2021-01-25', '2021-01-26', '2021-01-27', '2021-01-28','2021-01-29', '2021-01-30', '2021-01-31', '2021-02-01','2021-02-02', '2021-02-03', '2021-02-04', '2021-02-05','2021-02-06', '2021-02-07', '2021-02-08', '2021-02-09','2021-02-10', '2021-02-11', '2021-02-12', '2021-02-13','2021-02-14', '2021-02-15', '2021-02-16', '2021-02-17','2021-02-18', '2021-02-19', '2021-02-20', '2021-02-21','2021-02-22', '2021-02-23', '2021-02-24', '2021-02-25','2021-02-26', '2021-02-27', '2021-02-28', '2021-03-01'],dtype='datetime64[ns]', freq='D')

函數pd.date_range()的freq參數說明:

freq:指定生成的時間間隔單位,默認為D(天),此外,還有‘H’(小時),‘W’(周)等 W(周)分為,‘W-MON’表示從start開始輸出每周周一,默認只輸入W表示'W-SUN' B:只輸出工作日 # 生成從2021-01-01 00:00:00往后的60小時,每小時生成一個 pd.date_range('2021-01-01',periods=60,freq='H') DatetimeIndex(['2021-01-01 00:00:00', '2021-01-01 01:00:00','2021-01-01 02:00:00', '2021-01-01 03:00:00','2021-01-01 04:00:00', '2021-01-01 05:00:00','2021-01-01 06:00:00', '2021-01-01 07:00:00','2021-01-01 08:00:00', '2021-01-01 09:00:00','2021-01-01 10:00:00', '2021-01-01 11:00:00','2021-01-01 12:00:00', '2021-01-01 13:00:00','2021-01-01 14:00:00', '2021-01-01 15:00:00','2021-01-01 16:00:00', '2021-01-01 17:00:00','2021-01-01 18:00:00', '2021-01-01 19:00:00','2021-01-01 20:00:00', '2021-01-01 21:00:00','2021-01-01 22:00:00', '2021-01-01 23:00:00','2021-01-02 00:00:00', '2021-01-02 01:00:00','2021-01-02 02:00:00', '2021-01-02 03:00:00','2021-01-02 04:00:00', '2021-01-02 05:00:00','2021-01-02 06:00:00', '2021-01-02 07:00:00','2021-01-02 08:00:00', '2021-01-02 09:00:00','2021-01-02 10:00:00', '2021-01-02 11:00:00','2021-01-02 12:00:00', '2021-01-02 13:00:00','2021-01-02 14:00:00', '2021-01-02 15:00:00','2021-01-02 16:00:00', '2021-01-02 17:00:00','2021-01-02 18:00:00', '2021-01-02 19:00:00','2021-01-02 20:00:00', '2021-01-02 21:00:00','2021-01-02 22:00:00', '2021-01-02 23:00:00','2021-01-03 00:00:00', '2021-01-03 01:00:00','2021-01-03 02:00:00', '2021-01-03 03:00:00','2021-01-03 04:00:00', '2021-01-03 05:00:00','2021-01-03 06:00:00', '2021-01-03 07:00:00','2021-01-03 08:00:00', '2021-01-03 09:00:00','2021-01-03 10:00:00', '2021-01-03 11:00:00'],dtype='datetime64[ns]', freq='H') # 生成從2021-01-01 往后的60個周日 pd.date_range('2021-01-01',periods=60,freq='W') DatetimeIndex(['2021-01-03', '2021-01-10', '2021-01-17', '2021-01-24','2021-01-31', '2021-02-07', '2021-02-14', '2021-02-21','2021-02-28', '2021-03-07', '2021-03-14', '2021-03-21','2021-03-28', '2021-04-04', '2021-04-11', '2021-04-18','2021-04-25', '2021-05-02', '2021-05-09', '2021-05-16','2021-05-23', '2021-05-30', '2021-06-06', '2021-06-13','2021-06-20', '2021-06-27', '2021-07-04', '2021-07-11','2021-07-18', '2021-07-25', '2021-08-01', '2021-08-08','2021-08-15', '2021-08-22', '2021-08-29', '2021-09-05','2021-09-12', '2021-09-19', '2021-09-26', '2021-10-03','2021-10-10', '2021-10-17', '2021-10-24', '2021-10-31','2021-11-07', '2021-11-14', '2021-11-21', '2021-11-28','2021-12-05', '2021-12-12', '2021-12-19', '2021-12-26','2022-01-02', '2022-01-09', '2022-01-16', '2022-01-23','2022-01-30', '2022-02-06', '2022-02-13', '2022-02-20'],dtype='datetime64[ns]', freq='W-SUN') # 生成從2021-01-01 往后的60個周五 pd.date_range('2021-01-01',periods=60,freq='W-Fri') DatetimeIndex(['2021-01-01', '2021-01-08', '2021-01-15', '2021-01-22','2021-01-29', '2021-02-05', '2021-02-12', '2021-02-19','2021-02-26', '2021-03-05', '2021-03-12', '2021-03-19','2021-03-26', '2021-04-02', '2021-04-09', '2021-04-16','2021-04-23', '2021-04-30', '2021-05-07', '2021-05-14','2021-05-21', '2021-05-28', '2021-06-04', '2021-06-11','2021-06-18', '2021-06-25', '2021-07-02', '2021-07-09','2021-07-16', '2021-07-23', '2021-07-30', '2021-08-06','2021-08-13', '2021-08-20', '2021-08-27', '2021-09-03','2021-09-10', '2021-09-17', '2021-09-24', '2021-10-01','2021-10-08', '2021-10-15', '2021-10-22', '2021-10-29','2021-11-05', '2021-11-12', '2021-11-19', '2021-11-26','2021-12-03', '2021-12-10', '2021-12-17', '2021-12-24','2021-12-31', '2022-01-07', '2022-01-14', '2022-01-21','2022-01-28', '2022-02-04', '2022-02-11', '2022-02-18'],dtype='datetime64[ns]', freq='W-FRI') # 生成從2021-01-01 往后的60個工作日 pd.date_range('2021-01-01',periods=60,freq='B') DatetimeIndex(['2021-01-01', '2021-01-04', '2021-01-05', '2021-01-06','2021-01-07', '2021-01-08', '2021-01-11', '2021-01-12','2021-01-13', '2021-01-14', '2021-01-15', '2021-01-18','2021-01-19', '2021-01-20', '2021-01-21', '2021-01-22','2021-01-25', '2021-01-26', '2021-01-27', '2021-01-28','2021-01-29', '2021-02-01', '2021-02-02', '2021-02-03','2021-02-04', '2021-02-05', '2021-02-08', '2021-02-09','2021-02-10', '2021-02-11', '2021-02-12', '2021-02-15','2021-02-16', '2021-02-17', '2021-02-18', '2021-02-19','2021-02-22', '2021-02-23', '2021-02-24', '2021-02-25','2021-02-26', '2021-03-01', '2021-03-02', '2021-03-03','2021-03-04', '2021-03-05', '2021-03-08', '2021-03-09','2021-03-10', '2021-03-11', '2021-03-12', '2021-03-15','2021-03-16', '2021-03-17', '2021-03-18', '2021-03-19','2021-03-22', '2021-03-23', '2021-03-24', '2021-03-25'],dtype='datetime64[ns]', freq='B') # 2021-01-01 00:00:00每1小時20分鐘輸出一個時間戳 pd.date_range('2021-01-01',periods=60,freq='1h20min') DatetimeIndex(['2021-01-01 00:00:00', '2021-01-01 01:20:00','2021-01-01 02:40:00', '2021-01-01 04:00:00','2021-01-01 05:20:00', '2021-01-01 06:40:00','2021-01-01 08:00:00', '2021-01-01 09:20:00','2021-01-01 10:40:00', '2021-01-01 12:00:00','2021-01-01 13:20:00', '2021-01-01 14:40:00','2021-01-01 16:00:00', '2021-01-01 17:20:00','2021-01-01 18:40:00', '2021-01-01 20:00:00','2021-01-01 21:20:00', '2021-01-01 22:40:00','2021-01-02 00:00:00', '2021-01-02 01:20:00','2021-01-02 02:40:00', '2021-01-02 04:00:00','2021-01-02 05:20:00', '2021-01-02 06:40:00','2021-01-02 08:00:00', '2021-01-02 09:20:00','2021-01-02 10:40:00', '2021-01-02 12:00:00','2021-01-02 13:20:00', '2021-01-02 14:40:00','2021-01-02 16:00:00', '2021-01-02 17:20:00','2021-01-02 18:40:00', '2021-01-02 20:00:00','2021-01-02 21:20:00', '2021-01-02 22:40:00','2021-01-03 00:00:00', '2021-01-03 01:20:00','2021-01-03 02:40:00', '2021-01-03 04:00:00','2021-01-03 05:20:00', '2021-01-03 06:40:00','2021-01-03 08:00:00', '2021-01-03 09:20:00','2021-01-03 10:40:00', '2021-01-03 12:00:00','2021-01-03 13:20:00', '2021-01-03 14:40:00','2021-01-03 16:00:00', '2021-01-03 17:20:00','2021-01-03 18:40:00', '2021-01-03 20:00:00','2021-01-03 21:20:00', '2021-01-03 22:40:00','2021-01-04 00:00:00', '2021-01-04 01:20:00','2021-01-04 02:40:00', '2021-01-04 04:00:00','2021-01-04 05:20:00', '2021-01-04 06:40:00'],dtype='datetime64[ns]', freq='80T')

3.時間序列

什么是時間序列

時間序列就是以時間對象為索引的Series或DataFrame。eg:

# 創建一個Series,其中index為時間對象 sr = pd.Series(np.arange(1000),index=pd.date_range('2020-01-01',periods=1000)) sr 2020-01-01 0 2020-01-02 1 2020-01-03 2 2020-01-04 3 2020-01-05 4... 2022-09-22 995 2022-09-23 996 2022-09-24 997 2022-09-25 998 2022-09-26 999 Freq: D, Length: 1000, dtype: int32 # 查看sr的index屬性,index確實為時間對象,那么稱sr為一個時間序列 sr.index DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04','2020-01-05', '2020-01-06', '2020-01-07', '2020-01-08','2020-01-09', '2020-01-10',...'2022-09-17', '2022-09-18', '2022-09-19', '2022-09-20','2022-09-21', '2022-09-22', '2022-09-23', '2022-09-24','2022-09-25', '2022-09-26'],dtype='datetime64[ns]', length=1000, freq='D')

時間序列的特殊作用

時間序列可以直接查找某一年/月/日的數據 甚至支持年月日的切片

# 查找2020年所有數據 sr['2020'] 2020-01-01 0 2020-01-02 1 2020-01-03 2 2020-01-04 3 2020-01-05 4... 2020-12-27 361 2020-12-28 362 2020-12-29 363 2020-12-30 364 2020-12-31 365 Freq: D, Length: 366, dtype: int32 # 查找2020年3月所有數據 sr['2020-3'] 2020-03-01 60 2020-03-02 61 2020-03-03 62 2020-03-04 63 2020-03-05 64 2020-03-06 65 2020-03-07 66 2020-03-08 67 2020-03-09 68 2020-03-10 69 2020-03-11 70 2020-03-12 71 2020-03-13 72 2020-03-14 73 2020-03-15 74 2020-03-16 75 2020-03-17 76 2020-03-18 77 2020-03-19 78 2020-03-20 79 2020-03-21 80 2020-03-22 81 2020-03-23 82 2020-03-24 83 2020-03-25 84 2020-03-26 85 2020-03-27 86 2020-03-28 87 2020-03-29 88 2020-03-30 89 2020-03-31 90 Freq: D, dtype: int32 # 查找2020年3月19號所有數據 sr['2020-3-19'] 78 # 查找2020年3月到2021年5月1號所有數據 sr['2020-03':'2021-05-1'] 2020-03-01 60 2020-03-02 61 2020-03-03 62 2020-03-04 63 2020-03-05 64... 2021-04-27 482 2021-04-28 483 2021-04-29 484 2021-04-30 485 2021-05-01 486 Freq: D, Length: 427, dtype: int32

涉及時間序列的函數:resample()——強大的統計函數

#### resample()傳入的參數date_range()的freq參數相同,比如‘W’可以理解為將所有數據按周分組,結合sum(),mean()等函數可以實現數據統計 sr 2020-01-01 0 2020-01-02 1 2020-01-03 2 2020-01-04 3 2020-01-05 4... 2022-09-22 995 2022-09-23 996 2022-09-24 997 2022-09-25 998 2022-09-26 999 Freq: D, Length: 1000, dtype: int32 # 統計每周的數據總和 sr.resample('W').sum() 2020-01-05 10 2020-01-12 56 2020-01-19 105 2020-01-26 154 2020-02-02 203... 2022-09-04 6818 2022-09-11 6867 2022-09-18 6916 2022-09-25 6965 2022-10-02 999 Freq: W-SUN, Length: 144, dtype: int32 # 統計每周的數據平均 sr.resample('W').mean() 2020-01-05 2 2020-01-12 8 2020-01-19 15 2020-01-26 22 2020-02-02 29... 2022-09-04 974 2022-09-11 981 2022-09-18 988 2022-09-25 995 2022-10-02 999 Freq: W-SUN, Length: 144, dtype: int32

七、文件操作

# 讀取csv文件 pd.read_csv('maotai.csv') 日期收盤開盤高低交易量漲跌幅01234...239240241242243
2021/11/121,773.781,778.001,785.051,767.001.76M0.24%
2021/11/111,769.601,752.931,769.601,741.502.27M0.89%
2021/11/101,753.991,790.011,795.001,735.003.53M-2.01%
2021/11/91,790.011,819.981,827.871,782.002.74M-1.65%
2021/11/81,820.101,820.001,830.801,802.051.77M0.01%
.....................
2020/11/181,693.651,715.001,720.531,683.163.52M-1.29%
2020/11/171,715.801,740.001,742.351,701.072.52M-0.82%
2020/11/161,730.051,711.001,730.051,697.263.06M1.47%
2020/11/131,705.001,724.001,728.881,691.002.82M-1.72%
2020/11/121,734.791,730.011,750.001,722.272.35M0.20%

244 rows × 7 columns

# 參數index_col:指定索引,可以傳數字表示第n列,也可以傳列名 df = pd.read_csv('maotai.csv',index_col=0) df 收盤開盤高低交易量漲跌幅日期2021/11/122021/11/112021/11/102021/11/92021/11/8...2020/11/182020/11/172020/11/162020/11/132020/11/12
1,773.781,778.001,785.051,767.001.76M0.24%
1,769.601,752.931,769.601,741.502.27M0.89%
1,753.991,790.011,795.001,735.003.53M-2.01%
1,790.011,819.981,827.871,782.002.74M-1.65%
1,820.101,820.001,830.801,802.051.77M0.01%
..................
1,693.651,715.001,720.531,683.163.52M-1.29%
1,715.801,740.001,742.351,701.072.52M-0.82%
1,730.051,711.001,730.051,697.263.06M1.47%
1,705.001,724.001,728.881,691.002.82M-1.72%
1,734.791,730.011,750.001,722.272.35M0.20%

244 rows × 6 columns

# 默認情況下生成的列名均為字符串格式 df.index Index(['2021/11/12', '2021/11/11', '2021/11/10', '2021/11/9', '2021/11/8','2021/11/5', '2021/11/4', '2021/11/3', '2021/11/2', '2021/11/1',...'2020/11/25', '2020/11/24', '2020/11/23', '2020/11/20', '2020/11/19','2020/11/18', '2020/11/17', '2020/11/16', '2020/11/13', '2020/11/12'],dtype='object', name='日期', length=244) # 參數parse_dates=True將所有能用時間對象表示的列統統轉為時間對象 df = pd.read_csv('maotai.csv',index_col=0,thousands=',',parse_dates=True) df 收盤開盤高低交易量漲跌幅日期2021-11-122021-11-112021-11-102021-11-092021-11-08...2020-11-182020-11-172020-11-162020-11-132020-11-12
1773.781778.001785.051767.001.76M0.24%
1769.601752.931769.601741.502.27M0.89%
1753.991790.011795.001735.003.53M-2.01%
1790.011819.981827.871782.002.74M-1.65%
1820.101820.001830.801802.051.77M0.01%
..................
1693.651715.001720.531683.163.52M-1.29%
1715.801740.001742.351701.072.52M-0.82%
1730.051711.001730.051697.263.06M1.47%
1705.001724.001728.881691.002.82M-1.72%
1734.791730.011750.001722.272.35M0.20%

244 rows × 6 columns

df.index DatetimeIndex(['2021-11-12', '2021-11-11', '2021-11-10', '2021-11-09','2021-11-08', '2021-11-05', '2021-11-04', '2021-11-03','2021-11-02', '2021-11-01',...'2020-11-25', '2020-11-24', '2020-11-23', '2020-11-20','2020-11-19', '2020-11-18', '2020-11-17', '2020-11-16','2020-11-13', '2020-11-12'],dtype='datetime64[ns]', name='日期', length=244, freq=None) # 參數parse_dates=[n]將第n列列統統轉為時間對象 df = pd.read_csv('maotai.csv',index_col=0,parse_dates=[0]) df.index DatetimeIndex(['2021-11-12', '2021-11-11', '2021-11-10', '2021-11-09','2021-11-08', '2021-11-05', '2021-11-04', '2021-11-03','2021-11-02', '2021-11-01',...'2020-11-25', '2020-11-24', '2020-11-23', '2020-11-20','2020-11-19', '2020-11-18', '2020-11-17', '2020-11-16','2020-11-13', '2020-11-12'],dtype='datetime64[ns]', name='日期', length=244, freq=None) # header=None:不讓csv文件中的第0行成為列名 pd.read_csv('maotai.csv',index_col=0,header=None) 1234560日期2021/11/122021/11/112021/11/102021/11/9...2020/11/182020/11/172020/11/162020/11/132020/11/12
收盤開盤交易量漲跌幅
1,773.781,778.001,785.051,767.001.76M0.24%
1,769.601,752.931,769.601,741.502.27M0.89%
1,753.991,790.011,795.001,735.003.53M-2.01%
1,790.011,819.981,827.871,782.002.74M-1.65%
..................
1,693.651,715.001,720.531,683.163.52M-1.29%
1,715.801,740.001,742.351,701.072.52M-0.82%
1,730.051,711.001,730.051,697.263.06M1.47%
1,705.001,724.001,728.881,691.002.82M-1.72%
1,734.791,730.011,750.001,722.272.35M0.20%

245 rows × 6 columns

# names:自行指定列名 pd.read_csv('maotai.csv',index_col=0,header=None,names=['a','b','c','d','e','f','g']) bcdefga日期2021/11/122021/11/112021/11/102021/11/9...2020/11/182020/11/172020/11/162020/11/132020/11/12
收盤開盤交易量漲跌幅
1,773.781,778.001,785.051,767.001.76M0.24%
1,769.601,752.931,769.601,741.502.27M0.89%
1,753.991,790.011,795.001,735.003.53M-2.01%
1,790.011,819.981,827.871,782.002.74M-1.65%
..................
1,693.651,715.001,720.531,683.163.52M-1.29%
1,715.801,740.001,742.351,701.072.52M-0.82%
1,730.051,711.001,730.051,697.263.06M1.47%
1,705.001,724.001,728.881,691.002.82M-1.72%
1,734.791,730.011,750.001,722.272.35M0.20%

245 rows × 6 columns

# na_values:指定哪些字符串被指定為NaN pd.read_csv('maotai.csv',index_col=0,header=None,names=['a','b','c','d','e','f','g'],na_values=['收盤','開盤']) bcdefga日期2021/11/122021/11/112021/11/102021/11/9...2020/11/182020/11/172020/11/162020/11/132020/11/12
NaNNaN交易量漲跌幅
1,773.781,778.001,785.051,767.001.76M0.24%
1,769.601,752.931,769.601,741.502.27M0.89%
1,753.991,790.011,795.001,735.003.53M-2.01%
1,790.011,819.981,827.871,782.002.74M-1.65%
..................
1,693.651,715.001,720.531,683.163.52M-1.29%
1,715.801,740.001,742.351,701.072.52M-0.82%
1,730.051,711.001,730.051,697.263.06M1.47%
1,705.001,724.001,728.881,691.002.82M-1.72%
1,734.791,730.011,750.001,722.272.35M0.20%

245 rows × 6 columns

# df.to_文件格式()保存為某個文件格式

總結

以上是生活随笔為你收集整理的成为华尔街金融巨鳄第三课: Pandas2:学会使用Pandas-DataFrame的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 伦理片一区二区 | 爽爽淫人| 男人的天堂在线视频 | www.久久成人 | 伊人日韩 | 欧美色妞网| 欧美国产一级片 | 男生和女生一起差差差视频 | 狠狠撸狠狠干 | 乳揉みま痴汉4在线播放 | 337p粉嫩大胆噜噜噜亚瑟影院 | 欧美精品一二三区 | 日韩特黄毛片 | 岛国片在线播放 | 清清草视频 | 制服诱惑一区 | 777理伦三级做爰 | 亚洲成人免费在线 | 999热精品| 91成人在线观看高潮 | 色综合999 | 大度亲吻原声视频在线观看 | 在线观看不卡av | 欧美激情18p | 亚洲一级免费毛片 | 夜夜天天拍拍 | 亚洲熟妇毛茸茸 | 在线免费观看a视频 | 天天综合欧美 | 噼里啪啦国语版在线观看 | av不卡在线免费观看 | 亚洲女人天堂网 | 久久精选视频 | 性欧美精品 | 国产精品一区二区在线免费观看 | 国产99re | 一区二区不卡在线观看 | 自由 日本语 热 亚洲人 | 成年人午夜网站 | 色婷婷视频在线观看 | av2014天堂网 | 黄色a站| 精东传媒在线观看 | 国产专区在线播放 | 久久入口 | 在线观看视频一区二区三区 | 色哟哟在线免费观看 | 调教撅屁股啪调教打臀缝av | 亚洲一区二区精品视频 | 黄色69 | 欧美日韩免费高清一区色橹橹 | 男人猛吃奶女人爽视频 | 大片av| 一区二区三区免费高清视频 | 国产一二三区在线视频 | 日韩av在线第一页 | 精品人伦一区二区 | 欧美成在线观看 | 不卡的日韩av| 亚洲精品久久久久久国产精华液 | 在线观看麻豆视频 | 国产97超碰 | 成人在线精品 | 国产精选一区 | 日日爱99| 成年人黄色片网站 | 久久成人人人人精品欧 | www.超碰在线 | 人妖一级片 | 免费草逼视频 | 玉足调教丨vk24分钟 | 黄色一级片网站 | 法国经典free性复古xxxx | 干欧美少妇 | 美丽的姑娘在线观看免费 | 亚洲精品中文字幕乱码三区 | 国产女主播喷水视频在线观看 | 亚洲视频小说 | 激情丁香 | 色欧美日韩 | www,色 | 国产亚洲一区在线 | 国产1页| 亚洲综合91 | 禁断介护av一区二区 | 久久久啊啊啊 | 日韩亚洲欧美一区 | 国产精品久久久爽爽爽麻豆色哟哟 | 污污内射久久一区二区欧美日韩 | 日本一区二区精品视频 | 青草视频在线播放 | 91自啪 | 少妇被又大又粗又爽毛片久久黑人 | 久久久久国产综合av天堂 | 一区二区三区四区五区av | 免费看黄色的视频 | 香港三级韩国三级日本三级 | 国产黄色视屏 | 久久一区视频 |