示例中使用的‘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
date | open | close | high | low | volume | money | code | |
---|---|---|---|---|---|---|---|---|
0 | 2015/1/5 | 9.98 | 10.00 | 10.17 | 9.74 | 458099037 | 4.565388e+09 | 000001.XSHE |
1 | 2015/1/6 | 9.90 | 9.85 | 10.23 | 9.71 | 346952496 | 3.453446e+09 | 000001.XSHE |
2 | 2015/1/7 | 9.72 | 9.67 | 9.88 | 9.55 | 272274401 | 2.634796e+09 | 000001.XSHE |
3 | 2015/1/8 | 9.68 | 9.34 | 9.72 | 9.30 | 225445502 | 2.128003e+09 | 000001.XSHE |
4 | 2015/1/9 | 9.30 | 9.42 | 9.91 | 9.19 | 401736419 | 3.835378e+09 | 000001.XSHE |
在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
date | open | close | high | low | volume | money | code | 板块 | |
---|---|---|---|---|---|---|---|---|---|
0 | 2015/1/5 | 9.98 | 10.00 | 10.17 | 9.74 | 458099037 | 4.565388e+09 | 000001.XSHE | 保险;金融 |
1 | 2015/1/6 | 9.90 | 9.85 | 10.23 | 9.71 | 346952496 | 3.453446e+09 | 000001.XSHE | 保险;金融 |
2 | 2015/1/7 | 9.72 | 9.67 | 9.88 | 9.55 | 272274401 | 2.634796e+09 | 000001.XSHE | 保险;金融 |
3 | 2015/1/8 | 9.68 | 9.34 | 9.72 | 9.30 | 225445502 | 2.128003e+09 | 000001.XSHE | 保险;金融 |
4 | 2015/1/9 | 9.30 | 9.42 | 9.91 | 9.19 | 401736419 | 3.835378e+09 | 000001.XSHE | 保险;金融 |
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(';', expand=True) # expand=True分割后并且将数据分列
0 | 1 | |
---|---|---|
0 | 保险 | 金融 |
1 | 保险 | 金融 |
2 | 保险 | 金融 |
3 | 保险 | 金融 |
4 | 保险 | 金融 |
# pd.to_datetime函数:将交易日期由字符串改为时间变量
df['date'] = pd.to_datetime(df['date'])
pd.to_datetime('1999/01/01 16:45')
Timestamp('1999-01-01 16:45:00')
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['交易日期'] # 增加一天然后再减去今天的日期