今天用pandas练习了一下处理股票数据,途中遇到了种种问题,总结记录一下。
- 读写csv
data = pd.read_csv(r"D:\zeng\600084.csv", date_parser=True, encoding='gbk') #读取csv文件 data.to_csv(r"D:\zeng\600084.csv")#写csv
csv中含有中文,故指定encoding='gbk'。data_parse=True使得读取csv时会自动分析日期数据
- 处理字符串
data['股票代码'] = data['股票代码'].map(lambda x : x.strip("'"))
使用Series的map方法处理每个元素
-
筛选和丢弃数据
data[data['最高价']> 0.01] #筛选所有的“最高价”列大于0.01的数据 data.drop(data.index[data['最高价']<0.01]) #抛弃所有的“最高价”小于0.01的数据
drop方法要求提供索引作为参数。
-
排序
data.sort_values(by='日期', inplace=True)
-
统计信息
data["涨跌额"].describe() data["涨跌额"].quantile(0.9) #按升序排列,90%排位处的值
-
统计作图,直方图,kde,Q-Q图
data["涨跌幅"].hist(bins=300) #直方图 data["涨跌幅"].plot(kind='kde') #kde图,又称密度图
import scipy.stats as stats f = plt.figure(figsize=(12,8)) ax = f.add_subplot(111) stats.probplot(data["涨跌幅"], dist='norm', plot=ax) plt.show()
Q-Q图指出了数据与正态分布的相关性