Pandas的数据结构
-
Series
类似一维数组的对象, 操作像列表
-
value : 一组数据
-
index : 相关数据的索引标签
-
Series的创建
方式1 : 由列表或numpy数组创建Series(data=[1,2,3,4,5]) Series(data=np.random.randint(0,100,size=(10,))) #Series(data=np.random.randint(0,100,size=(10,5)))报错
-
head()和tail()
-
检测缺失数据和清洗空值
#pd.isnull()和pd.notnull() s1 = Series([1,2,3,4]),index =['周杰伦','林俊杰','陈奕迅','许嵩'] s2 = Series([1,2,3]),index = ['周杰伦','陈奕迅','林俊杰'] s = s1 + s2 s.notnull()#返回列表,对应位置不是NaN的返回true,是NaN的返回false,类似[True,False,True,False], s[s.notnull()]#可以取到清洗空值的效果
-
Series之间的运算
- 在运算中自动对齐不同索引的数据
- 如果索引不对应, 则补NaN
-
-
DataFrame (二维表格)
-
行标签index : 相当于类的属性
列标签column : 相当于一个对象
操作像面向对象 -
创建DataFrame
-
使用ndarray创建DataFrame
df = DataFrame(data=np.random.randint(0,100,size(3,4))),index = ['a','b','c'], column =['A','B','C','D']
-
使用字典创建DataFrame
dic = { '张三' : [150,150,150,150], '李四' : [0,0,0,0] } df = DataFrame(data=dic,index=['语文','数学','英语','理综'])
-
-
DataFrame的索引和切片
-
索引
#可以直接取对象,也就是一条完整的数据 df['张三'] #不可以通过df['语文']的方式取,跨对象取值 df.loc['语文'] #显式索引 df.iloc[0] #隐式索引
#示例 df['张三'] df['张三']['英语'] df.loc['英语','张三'] #一旦有逗号,左边一定是行,右边一定是列 df.loc[['语文','英语'],'张三']
-
切片
#切行 df[0:2] #切列 df.iloc[:,0:1]
-
-
-
tushare包 (这部分代码主要是pandas的文件读写)
df = tushare.get_k_data() df.to_csv('文件路径/文件名') #保存为本地的csv格式文件 #输出该股票所有收盘比开盘上涨3%以上的日期 df = pandas.read_csv('文件路径/文件名') #index_col : 将表中某一列对应的数据作为行索引index, #parse_dates : 将某些列的数据改成date类型 df = pandas.read_csv('文件路径/文件名',index_col='data',parse_dates=['date']) #删除某些列标签(无用属性) #tushare得到的列表不同于普通的DataFrame表,更像excel,一行代表一个对象,一列代表一个属性 df.drop(label='列标签',axis=1,inplace=true)#inplace表示直接对原数据进行操作