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简直是为量化领域量身定制的方法,经常会用到。
网友评论