示例中使用的‘000001.XSHE.csv’文件,已上传至csdn资源中,可直接下载
import pandas as pd
# 读取CSV文件 df = pd.read_csv('./000001.XSHE.csv') df = df[:5] # 取前5行数据 df['code'] = '000001.XSHE' # 添加股票代码列 df
字符串处理
在df之后加上str,可以把数据变为字符串,然后就可以使用常见的字符串函数对整列进行操作
# 取股票代码前6位 df['code'].str[:6]
0 000001 1 000001 2 000001 3 000001 4 000001 Name: code, dtype: object
# 转换字母大小写:upper转大写,lower转小写 df['code'].str.lower()
0 000001.xshe 1 000001.xshe 2 000001.xshe 3 000001.xshe 4 000001.xshe Name: code, dtype: object
# 计算字符串的长度,length df['code'].str.len()
0 11 1 11 2 11 3 11 4 11 Name: code, dtype: int64
# strip操作,把字符串两边的空格去掉 df['code'].str.strip()
0 000001.XSHE 1 000001.XSHE 2 000001.XSHE 3 000001.XSHE 4 000001.XSHE Name: code, dtype: object
df['code'].str.strip() # strip操作,把字符串两边的空格去掉 df['code'].str.contains('sh') # 判断字符串中是否包含某些特定字符 df['code'].str.replace('sz', 'sh') # 进行替换,将sz替换成sh
# split操作 df['板块'] = '保险;金融' df
df['板块'].str.split(';') # 对字符串进行分割
0 [保险, 金融] 1 [保险, 金融] 2 [保险, 金融] 3 [保险, 金融] 4 [保险, 金融] Name: 板块, dtype: object
df['板块'].str.split(';').str[:1] # 分割后取第一个值
0 [保险, 金融] 1 [保险, 金融] 2 [保险, 金融] 3 [保险, 金融] 4 [保险, 金融] Name: 板块, dtype: object
df['板块'].str.split(';').str[:1] # 分割后取第一个值
0 [保险] 1 [保险] 2 [保险] 3 [保险] 4 [保险] Name: 板块, dtype: object
df['板块'].str.split(';', expand=True) # expand=True分割后并且将数据分列
时间处理
pd.to_datetime函数
# pd.to_datetime函数:将交易日期由字符串改为时间变量 df['date'] = pd.to_datetime(df['date'])
pd.to_datetime('1999/01/01 16:45') • 1
Timestamp('1999-01-01 16:45:00') • 1
取日期相关数据
df['date'].dt.year # 输出这个日期的年份。相应的month是月份,day是天数,还有hour, minute, second df['date'].dt.week # 这一天是一年当中的第几周 df['date'].dt.dayofyear # 这一天是一年当中的第几天 df['date'].dt.dayofweek # 这一天是这一周当中的第几天,0代表星期一 df['date'].dt.weekday # 和上面函数相同,更加常用 df['date'].dt.weekday_name # 和上面函数相同,返回的是星期几的英文,用于报表的制作。 df['date'].dt.days_in_month # 这一天是这一月当中的第几天 df['date'].dt.is_month_end # 这一天是否是该月的开头,是否存在is_month_end? df['date'] + pd.Timedelta(days=1) # 增加一天,Timedelta用于表示时间差数据 (df['date'] + pd.Timedelta(days=1)) - df['交易日期'] # 增加一天然后再减去今天的日期