15 Pandas读取文件
read_csv() 读取以‘,’分割的文件到DataFrame
read_table()读取以‘/t’分割的文件到DataFrame
实质上是通用的,在实际使用中可以通过对sep参数的控制来对任何文本文件读取。
可以读取csv,dat,txt数据
Series
Obj = Series([1,2,3,4],index =[1,2,3,4])
obj.index
obj.value如果数据存放在一个字典中,可以直接通过字典创建Series
sdata = Series({ })
pd.isnull()检测缺失数据
obj.isnull()
obj.index = [1,2,3,4] 更改索引
DataFrame
1.构建DataFrame
data = DataFrame({
‘1’ , [q,w,e,r],
‘2’,[a,s,d]
})
pd.DataFrame.from_dict :将字典转换为dataframe
2.frame2 = DataFrame(data, columns = [‘year’,‘state’,‘pop’] index = [‘1’,‘2’,‘3’])
取数据series frame2[‘year’] frame.year
赋值列 frame2[‘year’] = 10 所有都为10
3.嵌套字典
pop = {‘1’:{2: 1 ,22 : 23},}外层的字典键作为列,内侧作为行索引
frame2.values 返回二维ndarray的数据
索引对象
Index 不可更改
index = obj.index
index的方法属性
append 链接另一个index对象,产生一个新index
djff 计算差集,得到一个index
intersection 计算交集
union 计算并集
isin 计算一个指示各值是否都包含在参数集合中的布尔型数组
delete 删除索引 i 处的元素,得到新的index
drop 删除传入的值
insert 插入到索引i处
unique 计算index中唯一值的数组
is_unique 当index没有重复值时,返回True
基本功能
重新索引
obj = Series([23,23,12,45] , index = [1,2,3,4,])
obj2 = obj.reindex(‘a’,‘b’,‘c’,‘d’)
重新索引做差值,用method
.reindex(range(6), method = ‘ffill’)
method选项
ffill或pad 前项填充
bfill或backfill 后项填充
Dataframe 的reindex传入一个列表修改行名,加入columns = states 修改列名
遍历索引
import pandas as pd
inp = [{‘c1’:10, ‘c2’:100}, {‘c1’:11, ‘c2’:110}, {‘c1’:12, ‘c2’:123}]
df = pd.DataFrame(inp)
print(df)
for date, row in df.iterrows():
print(row[‘c1’], row[‘c2’])
丢弃指定轴上的项
obj.drop(‘c’) obj.drop([1,2,3,4])
对于dataframe可以删除任意轴上的索引
data.drop(‘two’ , axis = 1)
可以通过subset参数来删除在age和sex中含有空数据的全部行
new_titanic_survival = titanic_survival.dropna(subset=[“age”, “sex”])
去除重复数据
利用drop_duplicates方法,可以返回一个移除了重复行的DataFrame.
默认情况下,此方法是对所有的列进行重复项清理操作,也可以用来指定特定的一列或多列进行。
默认情况下,上述方法保留的是第一个出现的值组合,传入take_last=true则保留最后一个。
索引选取和过滤
obj[‘b’ : ‘c’] 包含末端项 和python切片不一样
DataFrame索引
data[:2]前两行
data[data[‘three’]] > 5 选取所有three列大于5的行
data[data < 5] = 0
obj.ix[val] 选取单个行或者一组行
obj.ix[val1,val2]同时选取行和列
reindex 将一个或多个轴匹配到新索引
get_value set_value方法 根据行标签和列标签选取和设置单个值
算数运算和数据对其
可以对不同索引多想进行算数运算
相加操作,行列相同则元素相加,不同则组成并集
在算数方法中填充值
df1.add(df2 , fill_value = 0)
add sub div mul 加减乘除
DataFrame 和Series之间的运算遵从广播
函数应用和映射
Numpy的ufuncs也可以用于操作pandas对象
frame.apply(lambda x: x.max() - x.min(),axis = 1)
元素级的python函数也是可以用的
frame.applymap(lambda x : ‘%.2f’ %x)
Series有个应用于元