import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
dates=pd.date_range('20190312',periods=4)
df=pd.DataFrame(np.arange(16).reshape(4,4),index=dates,columns=['a','b','c','d'])
print(df)
#一选择DataFrame中的数据
# 1通过标签选择值,注意词标签为索引(行或列)
print(df.loc['20190312'])
print(df.loc[:,['a','b']])
# 2通过位置选择值
print(df.iloc[1,1])
print(df.iloc[1:3][1:3])
print(df.iloc[[1,3],1:3])
# 3通过标签+位置进行一起筛选
print(df.ix[:3,['a','b']])
# 4进行是或否的布尔筛选
print(df[df.a<7])
# 二设置DataFrame中的值
#1使用loc
df.loc['20190312','b']=111
#2使用iloc
df.iloc[1,1]=111
print(df.iloc[1,1])
#3使用布尔
df[df['a']>3]=0
print(df)
#4增加列
df['f']=0
print(df)
df['e']=pd.Series([1,2,3,4],index=pd.date_range('20190312',periods=4))
print(df)
#三 处理丢失数据
df['g']=np.nan
print(df)
# how={any,all}
print(df.dropna(axis=0,how='any'))
print(df)
print(df.fillna(value=1))
print(df.isnull())
print(np.any(df.isnull==True))
#四 导入导出数据,一般用csv格式,是数据类型最为简单的格式,还有pickle(python自带的一种压缩格式)html等
# read and to是一一对应的,如read_csv,to_csv
# df=pd.read_csv('/home/zyy/桌面/sadata.csv')
# print(df)
# df.to_csv()
# 五合并dataframe
df1=pd.DataFrame(np.zeros((4,4),dtype=float),columns=['a','b','c','d'])
df2=pd.DataFrame(np.ones((4,4),dtype=float),columns=['a','b','c','d'])
df3=pd.DataFrame(np.ones((4,4),dtype=float)*2,columns=['a','b','c','d'])
print(df1,df2,df3)
# 1concatenating
res=pd.concat([df1,df2,df3],axis=0,ignore_index=True)
print(res)
# join,['inner','outer']
df1=pd.DataFrame(np.zeros((3,3),dtype=float),columns=['a','b','c',])
df2=pd.DataFrame(np.ones((3,3),dtype=float),columns=['b','c','e'])
res=pd.concat([df1,df2],join='outer',ignore_index=True)
res=pd.concat([df1,df2],join='inner',ignore_index=True)
print(res)
# join_axis
ress=pd.concat([df1,df2],axis=1,join_axes=[df2.index])
print(ress)
# 2merge
# 没有好好听就没做记录啦
# 六图表 plot data
# Series
data=pd.Series(np.random.random(1000),index=np.arange(1000))
data=data.cumsum()
data.plot()
plt.show()
# DataFrame
data1=pd.DataFrame(np.random.randn(1000,4),index=np.arange(1000),columns=list('abcd'))
data1=data1.cumsum()
data1.plot()
plt.show()
# plt的画图类型:bar,hist,box,kde,area,scatter,hexbin,pie
# 打印分布点的数据
ax=data1.plot.scatter(x='a',y='b',color='red',label='class1')
data1.plot.scatter(x='c',y='b',color='green',label='class2',ax=ax)
plt.show()