Pandas入门
一、创建对象
创建一个Series通过传递值的列表
import numpy as np
import pandas as pd
s = pd.Series([1,3,5,np.nan,8])
#此时打印s为,以列来看
0 1.0
1 3.0
2 5.0
3 NaN
4 8.0
dtype: float64
DataFrame通过传递带有日期时间索引和带标签的列的NumPy数组来创建一个:
dates = pd.date_range("20201026",periods=6)
df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list("ABCD"))
#打印df为,DataFrame的第一个输入参数为数据源,index为行label,columns为列label
DataFrame通过传递对象的字典来创建,这些对象可以转换为类似序列的对象。
二、查看数据
1、head(),默认读取为前五行;
df.head()
2、tail()方法可设置读取行数;
df.tail(2)
3、显示索引的列,使用index和columns;
4、describe() 显示数据的快速统计摘要:
5、转置数据,直接使用.T方法就可;
df.T
6、按轴排序,使用sort_index()方法,注意其中入参的axis和ascending,axis = 0时按行,反之按列。ascending=True时按顺序,反之按逆序;
df.sort_index(axis=0,ascending=False)
7、按值排序,使用sort_values()方法,可通过设置参数选哪一列;
三、选择
1、简单取值
如果想直接取一列,直接使用df.A,df表示一个DataFrame,A表示一个列;
同时也支持跟列表操作类似的切片操作。如df[0:3];
示例:
df.A
df[:3]
2、通过标签来get,如果想获得某一行的数据,可以通过标签来得到,如
df.loc[dates[0]]#获得某一行值
3、通过标签在多轴上选择:如:
df.loc[:,['A','B']]#获得A,B列带标签的表格
4、显示标签切片,两个端点都包括在内:
df.loc['20201026','20201028',['A','B']]#获得从1026至1028,A、B两列的表格
5、只获得对应列的值,不返回标签:
df.loc["20201026",["A","B"]]
6、获得特定位置的值:
df.loc["20201026","A"]
7、通过iloc[ ]获得值:
df.iloc[3]#获得(3+1)行的值
df.iloc[3:5,0:2]#类似于切片操作
df.iloc[[1,2,4],[0,2]]
df.iloc[1:3,:]
df.iloc[1,1]
df.iat[1,1]
8、给DataFrame设置值:
首先重新生成一个DataFrame
s1 = pd.Series([1,2,3,4,5,6],index=pd.date_range('20130102',periods=6))
df['F'] = s1#增加F列
df.at[dates[0],"A"] = 0#第1行第A列设置为0
df.iat[0,1] = 0
df[df > 0] = -df #将大于零的数据全部转换成负数
四、加入
left = pd.DataFrame({'key':['foo','bar'],'lval':[1,2]})
right = pd.DataFrame({'key':['foo','bar'],'rval':[4,5]})
pd.merge(left,right,on='key')
五、绘图
使用绘图需要导入matplotlib API
import matplotlib.pyplot as plt
plt.close('all')
ts = pd.Series(np.random.randn(1000),index = pd.date_range('1/1/2000',periods=1000))
ts = ts.cumsum()
ts.plot()
绘制DataFrame:
df = pd.DataFrame(np.random.randn(1000,4),index = ts.index,columns = list("ABCD"))
df = df.cumsum()
plt.figure()
df.plot()