Pandas 是一個很是好用的庫,總結一下 Pandas DataFrame 常見用法,在使用的時候能夠快速找到。
Pandas DataFrames 是具備帶標籤的行和列的二維數據結構,能夠存儲不少類型的數據。若是你熟悉 Excel 的話,能夠將 Pandas DataFrames 看作相似於電子表格。python
import numpy as np import pandas as pd
data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) c = ['a', 'b', 'c'] r = ['A', 'B', 'C'] df = pd.DataFrame(data=data, columns=c, index=r)
# 行名排序 降序 df.sort_index(axis=0, ascending=False) # 列名排序 降序 df.sort_index(axis=0, ascending=False)
df["a"].sort_values(ascending = False)
df.sort_values( ['a', 'b', 'c'])
df.iloc[2] # 選擇第二行全部數據, 是Series類型 df.iloc[[2]] # 選擇第二行全部數據, 是DataFrame類型 df.iloc[:, 2] # 選擇第二列全部數據, 是Series類型 df.iloc[:, [2]] # 選擇第二列全部數據, 是DataFrame類型 df.iloc[:, 0:2] # 選擇0到2列全部數據 df.iloc[[2,3], 0:2] # 選擇2和3行, 0到2列全部數據 df.iat[1, 1] # 根據位置快速取出數據, 獲取單個數據推薦這種方法
df.loc['top'] # 選擇指定行數據, 是Series類型 df.loc[['top']] # 選擇指定行數據, 是DataFrame類型 df.loc[:, 'xm'] # 選擇指定列數據, 是Series類型(不推薦) df.loc[:, ['xm']] # 選擇指定列數據, 是DataFrame類型(不推薦) df.loc[:, ['bj','xm']] # 選擇多列數據(不推薦) df.loc[:, 'bj':'xb'] # 選擇多列之間全部數據, 列切片只能用這種方法 df.loc[['top','count'], 'bj':'xb'] # 選擇指定行, 指定列數據 df.at['top', 'xm'] # 根據自定義索引快速取出數據, 獲取單個數據推薦這種方法
# 選取全部出生日期大於等於1998年的數據, 這裏是字符串比較 df[df['csrq']>='1998'] # 選取全部出生日期大於等於1997年小於1999年的數據 df[(df['csrq']>='1997')&(data['csrq']<'1999')] # 選取全部出生日期大於等於1997年小於1999年的數據 df[df['csrq'].between('1997', '1999')] # 選取全部出生日期大於等於1997年或者姓名爲張三的數據 df[(df['csrq']>='1997')|(data['xm']=='張三')] # 另外一種選取方式(不推薦, 實測效率比上面低) df[df.csrq>='1998'] # 選擇字段值爲指定內容的數據 df[df['xm'].isin(['張三','李四'])]
# 假設cj列原本不存在, 這樣會在列尾添加新的一列cj, 值爲s(Series對象), 原地 df['cj'] = s # 在第1列位置插入一列dz(地址), 值爲s, 原地 df.insert(0, 'dz', s) # 在df中添加內容爲df2(必須是DataFrame對象)的新列(添加列), 非原地 df.join(df2) # 將df2中的行添加到df的尾部(添加行), 非原地 df.append(df2) # 刪除單列, 並返回刪除的列, 原地 df.pop('xm') # 刪除指定行, 非原地 df.drop(1) # 刪除指定列, axis=1指第2維, axis默認0, 非原地 df.drop(['xm', 'xh'], axis=1)
'''重要屬性''' df.values # 查看全部元素的value df.dtypes # 查看全部元素的類型 df.index # 查看全部行名 df.index = ['總數', '不一樣', '最多', '頻率'] # 重命名行名 df.columns # 查看全部列名 df.columns = ['班級', '姓名', '性別', '出生日期'] # 重命名列名 df.T # 轉置後的df, 非原地 '''查看數據''' df.head(n) # 查看df前n條數據, 默認5條 df.tail(n) # 查看df後n條數據, 默認5條 df.shape() # 查看行數和列數 df.info() # 查看索引, 數據類型和內存信息 '''數據統計''' df.describe() # 查看數據值列的彙總統計, 是DataFrame類型 df.count() # 返回每一列中的非空值的個數 df.sum() # 返回每一列的和, 沒法計算返回空, 下同 df.sum(numeric_only=True) # numeric_only=True表明只計算數字型元素, 下同 df.max() # 返回每一列的最大值 df.min() # 返回每一列的最小值 df.argmax() # 返回最大值所在的自動索引位置 df.argmin() # 返回最小值所在的自動索引位置 df.idxmax() # 返回最大值所在的自定義索引位置 df.idxmin() # 返回最小值所在的自定義索引位置 df.mean() # 返回每一列的均值 df.median() # 返回每一列的中位數 df.var() # 返回每一列的方差 df.std() # 返回每一列的標準差 df.isnull() # 檢查df中空值, NaN爲True, 不然False, 返回一個布爾數組 df.notnull() # 檢查df中空值, 非NaN爲True, 不然False, 返回一個布爾數組
df.values np.array(df)
獲取交易對BTC/USDT
最近10日的收盤標準差。數組
# 計算標準差 since_days = 10 test_symbol = 'BTC/USDT' # 計算時間點 threeDayAgo = (datetime.datetime.now() - datetime.timedelta(days=since_days)) SinceTimeStamp = int(time.mktime(threeDayAgo.timetuple())) * 1000 # 轉換爲時間戳,*1000,轉爲毫秒時間戳13位 tickers_list = binance_exchange.fetch_ohlcv(test_symbol, timeframe='1d', since=SinceTimeStamp) # print(len(tickers_list)) # print(tickers_list) kline_data = pd.DataFrame(tickers_list) kline_data.columns = ['Datetime', 'Open', 'High', 'Low', 'Close', 'Vol'] print(kline_data) print("describe:\n", kline_data.describe()) std = kline_data['Close'].std() print("標準差:", std)
打印:數據結構
Datetime Open High Low Close Vol 0 1590192000000 9170.00 9307.85 9070.00 9179.15 43526.296966 1 1590278400000 9179.01 9298.00 8700.00 8720.34 70379.866450 2 1590364800000 8718.14 8979.66 8642.72 8900.35 62833.910949 3 1590451200000 8900.35 9017.67 8700.00 8841.18 58299.770138 4 1590537600000 8841.00 9225.00 8811.73 9204.07 68910.355514 5 1590624000000 9204.07 9625.47 9110.00 9575.89 74110.787662 6 1590710400000 9575.87 9605.26 9330.00 9427.07 57374.362961 7 1590796800000 9426.60 9740.00 9331.23 9697.72 55665.272540 8 1590883200000 9697.72 9700.00 9381.41 9448.27 48333.786403 9 1590969600000 9448.27 9619.00 9421.67 9542.47 15797.593487 describe: Datetime Open High Low Close \ count 1.000000e+01 10.000000 10.000000 10.000000 10.000000 mean 1.590581e+12 9216.103000 9411.791000 9049.876000 9253.651000 std 2.615890e+08 325.168891 282.355505 312.180668 339.899591 min 1.590192e+12 8718.140000 8979.660000 8642.720000 8720.340000 25% 1.590386e+12 8967.762500 9243.250000 8727.932500 8970.050000 50% 1.590581e+12 9191.540000 9456.555000 9090.000000 9315.570000 75% 1.590775e+12 9442.852500 9623.852500 9330.922500 9518.920000 max 1.590970e+12 9697.720000 9740.000000 9421.670000 9697.720000 Vol count 10.000000 mean 55523.200307 std 16943.615232 min 15797.593487 25% 50166.657937 50% 57837.066549 75% 67391.244373 max 74110.787662 標準差: 339.8995912341039
相關文章:
Pandas DataFrame 總結
Python Pandas DataFrame 建立 (二十)
Python Pandas DataFrame 元素訪問 (二十一)app