取数据

ipython 查看加载变量

%who_ls

获取数据框中数据

当使用loc获得一个数据框的时候,要想遍历这个数据集中的内容

  • iterrows按照行获取数据,每次获得一行数据

iterrows是一个生成器,每个返回的生成器中包含两个内容:

  • 改行的索引

  • 改行的数据list,并且list的下标是从0开始的

>>>df = pd.DataFrame([[1, 1.5]], columns=['int', 'float'])
>>>row = next(df.iterrows())[1]
>>>row
int      1.0
float    1.5
Name: 0, dtype: float64
>>>print(row['int'].dtype)
float64
>>>print(df['int'].dtype)
int64

遍历一行中的列

  • 使用索引进行遍历iloc[:0]

  • 使用列名进行遍历loc['chr']

##获取pandas中的某一行
df=d.loc[(d['chr']=="Ghir_A01") & (d['start']==8076) & (d['end']==9496)]
#获取该行对应的第3列及以后列的数据
df.iloc[:,3:]
df.loc[['列名3','列名4'...]]

使用映射函数,批量处理

对数据库进行批量处理

  • map

  • apply

##使用apply对数据框进行批量处理
#没列数加上10
df.apply(lambda x:x+10,axis=1)

多条件筛选

筛选符合多个条件的行

筛选chr列为"Ghir_A01"同时"start"列为8076的行

>>>d.loc[(d['chr']=="Ghir_A01") & (d['start']==8076)]
    chr  start    end  0DPA_Sample001
0   Ghir_A01   8076   9496               0

获取多行多列

df.loc['one':'two',['a','c']]#one到two行,ac列

去除行名中的重复

## 行名重复 index
def filterData(myDF):
    ...:     myDF['index'] = myDF.index
    ...:     myDF= myDF.drop_duplicates('index')
    ...:     myDF.set_index = myDF['index']
    ...:     myDF= myDF.drop('index', axis =1)
    ...:     return myDF

合并两个数据框

#横向连接两个数据框,按行合并
pd.concat([data1,data2],axis=0)
#纵向连接两个数据框,按列合并
pd.concat([data1,data2],axis=1)
#merge 合并

修改行名与列名

#修改列名
mergeData.columns=['HuanGangRep1', 'HuanGangRep2', 'HuanGangRep3', 'mean']
#修改行名
mergeData.index=['HuanGangRep1', 'HuanGangRep2', 'HuanGangRep3', 'mean']

调整列的顺序

按照指定列进行排序

 #! 按照第18列进行降序排序后,提取对应的p-value
pt=tmpData.sort_values(by=[18],axis=0,ascending=False).iloc[0,17]

Last updated