pandas

  • df.describe()

count:数量统计,此列共有多少有效值
unipue:不同的值有多少个
std:标准差
min:最小值
25%:四分之一分位数
50%:二分之一分位数
75%:四分之三分位数
max:最大值
mean:均值

  • df['close'].shift(-1)
  • df['close'].diff(-1)
  • df['close'].pct_change(1) // 类似于diff,但是求的是两个数直接的比例,相当于求涨跌幅
  • df['volume'].cumsum() // 该列的累加值
  • (df['涨跌幅'] + 1).cumprod() // 累乘
  • df['close'].rank(ascending=True, pct=False)
  • df['close'].value_counts()
  • df['symbol'].isin(['BTCUSD', 'LTCUSD', 'ETHUSD'])

> 删除缺失值:

  • df.dropna(how='any')
  • df.dropna(subset=['12小时', 'close'], how='all') // all代表全部为空,才会删除该行;any只要一个为空,就删除该行。
    > 补全缺失值:
  • df.fillna(value=0)
  • df['12小时'].fillna(value=df['close'], inplace=True)
  • df.fillna(method='ffill')
  • df.fillna(method='bfill')
    > 排序函数:
  • df.sort_values(by=['candle_begin_time'], ascending=0)
    > 两个df上下合并操作,append操作:
  • df1.append(df2, ignore_index=True)
  • df1.append(df2)
    > 对数据进行去重:
df3.drop_duplicates(
    subset=['candle_begin_time', 'symbol'],  
    # subset参数用来指定根据哪类类数据来判断是否重复。若不指定,则用全部列的数据来判断是否重复
    keep='first', 
    # 在去除重复值的时候,我们是保留上面一行还是下面一行?first保留上面一行,last保留下面一行,False就是一行都不保留
    inplace=True
)
  • df.reset_index(inplace=True, drop=False) // 重置index
  • df.rename(columns={'close': '收盘价', 'open': '开盘价'})
  • df.empty
  • pd.DataFrame().empty // 创建一个空的DataFrame
  • df.T // 将数据转置,行变成列
    > 字符串处理:
df['symbol'].str.upper()
df['symbol'].str.lower()
df['symbol'].str.len()
df['symbol'].str.strip()
df['symbol'].str.contains('AID')
df['symbol'].str.replace('AID', 'AVT')

> 时间处理:

df['candle_begin_time'].dt.year
df['candle_begin_time'].dt.week
df['candle_begin_time'].dt.dayofyear
df['candle_begin_time'].dt.dayofweek
df['candle_begin_time'].dt.weekday
df['candle_begin_time'].dt.day_name
df['candle_begin_time'].dt.days_in_month
df['candle_begin_time'].dt.is_month_start
df['candle_begin_time'] + pd.Timedelta(hours=1)
(df['candle_begin_time'] + pd.Timedelta(days=1)
  • rolling和expanding简直是为量化领域量身定制的方法,经常会用到。

推荐阅读更多精彩内容