对使用python进行数据分析的研究者而言,pandas是非常有用的一个模块。在现实数据收集中难以保证数据格式整齐,没有缺项漏项,按照研究意向进行排序与整理。pandas可以高效的帮助研究者进行数据整理,便于进入分析流程。
本次笔记内容:
- dictionary和data frame之前的转换及注意事项
- 替换data frame中的字段:
df.replace
dictionary和data frame之前的转换及注意事项
对一个简单字典,转化为dataframe:
比如dic = {A: 1, B: 2, C: 3}
要转化为一列为A,B,C,一列为1,2,3的dataframe:
test = pd.DataFrame(list(dic.items()), index = [range(0,2)])
因为没有可以转化为Index的字段,所以需要加一个index =
如果以column(列)作为不同的subjects, 以行(row)作为不同的features, 如以下例子,import pandas之后可以直接读取csv格式的excel表格得到data frame, 且定义为df
如果需要将其转化成dictionary:
df_dict = df.to_dict()
需要注意的是,如果直接这样转化,会丢失feature的名称,如下图所示。
如果你期望的data frame和dictionary的对应方式是这样:
{'col1':{row1:value1,row2:value2,row3:value...}...}
那需要用set_index
对data frame的index进行处理。
当你将data frame的内容转化成嵌套字典(nested dictionary)之后,可以通过对其中k,v,第二层的k,v进行更多操作,如添加新的feature或者sample, 清理格式不对的字符等,以达到数据整理的目的(..=_=可能直接使用pandas也可以达到同样的目的,可能会更加简洁明了,弄明白了我会更新)。
使用pd.DataFrame(df.dict)
dictionary转化为dataframe。
to_dict()
可以在括号中添加各种参数,以得到不同的dictionary, 详细请见:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_dict.html
替换data frame中的字段:df.replace
为满足一些脚本的input格式,需要对原始数据进行整理。有的对data frame中所有的数据进行规整,有的仅针对某一列,有的对不同的列规整要求不一样。
以df
为例:
df
中所有样本服用的drug
都是aspirin
:
还有一个用法是Series.str.replace
,其对象不是dataframe,但是可以将data frame中需要replace的列挑出来单独处理,比方说:
df['S_0001'] = df['S_0001'].str.replace('drug', 'aspirin')
df
中S_0001样本的drug
是aspirin
,S_0002样本的drug
是p-acetamidophenol
:
定义一个字典用于囊括所有需要replace的项目,在样本量庞大,整理规则复杂的项目中使用十分便捷。