Pandas的数据结构
序列and数据框
import numpy as np
import pandas as pd
print(np.__version__)
print(pd.__version__)
#序列,只有两列,一列是索引列,另一列是数值列
#手动输入方式生成序列
return_series1=pd.Series([0.003714,-0.001838,-0.003087,-0.024112],index=['中国石油','工商银行','上汽集团','宝钢股份'])
print(return_series1)
#通过数组生成序列
return_array=np.array([[0.003731,0.021066,-0.004854,0.006098,-0.00606],[-0.001838,0.001842,-0.016544,-0.003738,0.003752],[-0.003087,-0.000344,-0.033391,0.007123,0.004597],[-0.024112,0.011704,-0.029563,-0.01457,0.016129]])
print(return_array)
return_series2=pd.Series(return_array[:,0],index=['中国石油','工商银行','上汽集团','宝钢股份'])
print(return_series2)
#数据框,类似excel。三部分:数据data,行索引index,列名columns
date=['2018-09-03','2018-09-04','2018-09-05','2018-09-06','2018-09-07']
stock=['中国石油','工商银行','上汽集团','宝钢股份']
return_datafram=pd.DataFrame(data=return_array.T,index=date,columns=stock) #日期作为行索引,股票名称作为列名
print(return_datafram)
#导出
return_datafram.to_excel('D:/return.xlsx')
return_datafram.to_excel('D:/return.csv')#中文乱码
return_datafram.to_excel('D:/return.txt')
#从外部文件导入数据
HS300_excel1=pd.read_excel('D:/a_DUFE/000master_gogogo/python/配套彩图和数据/数据/第四章/沪深300指数.xlsx',sheet_name="Sheet1",header=0,index_col=0)
print(HS300_excel1.head())
数据框的可视化
import matplotlib.pyplot as plt
from pylab import mpl #从pylab导入子模块mpl
mpl.rcParams['font.sans-serif']=['SimHei'] #以黑体的字体显示中文
mpl.rcParams['axes.unicode_minus']=False #解决保存图像是负号'-'显示为方块的问题
HS300_excel1.plot(kind='line',subplots=True,sharex=True,layout=(2,2),figsize=(10,8),title=u'2018年沪深300指数走势图',grid=True,fontsize=13)
plt.show()
数据框内部的操作
print(HS300_excel1.index) #查看行索引名
print(HS300_excel1.columns) #查看列名
print(HS300_excel1.shape) #查看数据框多少行、多少列
print(HS300_excel1.describe()) #查看样本量、均值、方差、最大值、最小值、分位数等
#排序
print(HS300_excel1.sort_index(axis=0,ascending=True)) #按照行索引由小到大排序
print(HS300_excel1.sort_index(axis=0,ascending=False)) #按照行索引由大到小排序
print(HS300_excel1.sort_values(by='收盘点位',ascending=True)) #按收盘点位由小到大排序
print(HS300_excel1.sort_values(by='最高点位',ascending=False)) #按最高点位由大到小排序
#修改列名
HS300_columschange=HS300_excel1.rename(columns={'收盘点位':'收盘价格'}) #“收盘点位”修改为“收盘价格”
print(HS300_columschange.head(1))
#缺失值处理
stock=pd.read_excel('D:/a_DUFE/000master_gogogo/python/配套彩图和数据/数据/第四章/关于2018年3月份股票价格数据.xlsx')
print(stock) #缺失值用NaN表示
#删除法
stock_dropna=stock.dropna()
print(stock_dropna)
#补齐法(赋值零)
stock_fillzero=stock.fillna(value=0)
print(stock_fillzero)
#补齐法(向前填充)
stock_ffill=stock.fillna(method='ffill')
print(stock_ffill)
#补齐法(赋值零)
stock_bfill=stock.fillna(method='bfill')
print(stock_bfill)
数据框之间的操作
在Pandas中,关于数据框的拼接涉及3个函数,分别是concat、merge和join,其中,concat是可以运用于按行、按列拼接,merge和join则主要运用于按列拼接。
HS300_excel1=pd.read_excel('D:/a_DUFE/000master_gogogo/python/配套彩图和数据/数据/第四章/沪深300指数.xlsx',sheet_name="Sheet1",header=0,index_col=0)
HS300_excel2=pd.read_excel('D:/a_DUFE/000master_gogogo/python/配套彩图和数据/数据/第四章/沪深300指数.xlsx',sheet_name="Sheet2",header=0,index_col=0)
stock1=pd.read_excel('D:/a_DUFE/000master_gogogo/python/配套彩图和数据/数据/第四章/关于2018年3月份股票价格数据.xlsx',sheet_name="Sheet1",header=0,index_col=0)
stock2=pd.read_excel('D:/a_DUFE/000master_gogogo/python/配套彩图和数据/数据/第四章/关于2018年3月份股票价格数据.xlsx',sheet_name="Sheet2",header=0,index_col=0)
#函数concat
HS300_new=pd.concat([HS300_excel2,HS300_excel1],axis=0) #按行拼接
print(HS300_new.head())
stock_new=pd.concat([stock1,stock2],axis=1)
print(stock_new) #按列拼接
#函数merge
stock_new=pd.merge(left=stock1,right=stock2,left_index=True,right_index=True)
print(stock_new)
#函数join
stock_new=stock1.join(stock2,on='日期')
print(stock_new)