【3.1.1.1】Pandas--CSV的读写
二、读取文件
2.1 read_csv
最近处理数据时发现当pd.read_csv()数据时有时候会有读取到未命名的列,且该列也用不到,一般是索引列被换掉后导致的,有强迫症的看着难受,这时候dataframe.drop([columns,])是没法处理的,怎么办呢, 最笨的方法是直接给列索引重命名:
data6
Unnamed: 0 high symbol time
date
2016-11-01 0 3317.4 IF1611 18:10:44.8
2016-11-01 1 3317.4 IF1611 06:01:04.5
2016-11-01 2 3317.4 IF1611 07:46:25.5
2016-11-01 3 3318.4 IF1611 09:30:04.0
2016-11-01 4 3321.8 IF1611 09:31:04.0
data6.columns = list(‘abcd’)
data6
a b c d
date
2016-11-01 0 3317.4 IF1611 18:10:44.8
2016-11-01 1 3317.4 IF1611 06:01:04.5
2016-11-01 2 3317.4 IF1611 07:46:25.5
2016-11-01 3 3318.4 IF1611 09:30:04.0
2016-11-01 4 3321.8 IF1611 09:31:04.0
读取tsv
bb = pd.read_csv("ig_bases_mutated_nucl_freq.tsv",sep='\t',index_col=False,header=None,skip_blank_lines=True)
- index_col=False # 不用第一列作为index
- header=None # 不用第一行作为header ;如果header=None,则默认的columns.names为[0,1,2,3..],数字哦
- skiprows=[0,1,2] 不读取第一、二、三行数据
- skipfooter = 3 最后3行不读
常用例子:
df = pd.read_csv(one_file_fp, skiprows=[0, 1, 2, 3, 4, 5], index_col=False, sep=',').dropna(subset=['Peptide'])
2.2 read_table
2.2.1 用空格或tab来切分数据
df = pd.read_table(‘paps_abangle_angles_results.tsv’,sep=" |\t", engine=‘python’)
需要engine指定Python哦
2.2.2 12E8自动被识别为科学计数
dtype : Type name or dict of column -> type, default None
Data type for data or columns. E.g. {‘a’: np.float64, ‘b’: np.int32} Use str or object together with suitable na_values settings to preserve and not interpret dtype. If converters are specified, they will be applied INSTEAD of dtype conversion.
df = pd.read_table(‘paps_abangle_angles_results.tsv’,dtype={“column_name”:“str”})
指定“column_name”那一列数据为str的数据类型
三、写文件
df_total.to_csv(result_fp,header=None,index =False)
四、报错
报错1
ParserError: Error tokenizing data. C error: Expected 1 fields in line 122, saw 2
解决办法:
df = pd.read_table('input/Adimab_IRA_out.txt',header=None,index_col=False,sep='\t',engine='python')[[0,1]]
只要第一、第二列数据
报错2 CSV error: line contains NULL byte
原因:通常是因为保存时扩展名为xls或xlsx,而将其改为csv文件通常是重命名
解决方法1:
把它另存为.csv文件即可
解决方法2:
fi = open('my.csv', 'rb')
data = fi.read()
fi.close()
fo = open('mynew.csv', 'wb')
fo.write(data.replace('\x00', ''))
fo.close()
参考资料
- https://blog.csdn.net/claroja/article/details/64439735?locationNum=3&fps=1
- https://blog.csdn.net/wanglingli95/article/details/78887771
- http://pandas.pydata.org/pandas-docs/version/0.21/generated/pandas.read_csv.html
- https://blog.csdn.net/ls13552912394/article/details/79349809
- http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_excel.html
- https://blog.csdn.net/qq_33711966/article/details/79902276
这里是一个广告位,,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn