我有一个 .txt 文件,其中包含文本数据和数字数据。文件的前两行具有文本数据形式的基本信息,而第一列(我将第零列称为第一列)也具有文本形式的基本数据。在文件的所有其他位置,数据均为数字形式。我希望使用python中的库(最好是numpy或pandas或两者结合使用)来分析文件中存在的数值数据(分析,如回归,相关性,scikit-learn等)。我重申文件中的所有数据对我来说是必不可少的。以下快照(取自Excel)显示了数据的格式的截短版本:
此快照中显示的数据可以找到here.
特别是,我想要的是能够使用python(numpy或pandas)从该文件中导入所有数值数据,并能够使用前两行中的文本数据引用此数据中的特定行(类型,标签)和第一列(对象编号)。在我的实际数据文件中,我有成千上万的行(对象类型)和数十列。
我已经尝试使用numpy.loadtxt(...)
和pandas.read_csv(...)
打开该文件,但是我遇到了错误,或者以笨拙的格式加载了数据。对于如何以某种方式在python中导入文件,以使我拥有自己想要的功能,我将深表感激。
答案 0 :(得分:4)
如果我是你,我会使用pandas
,然后使用类似以下的方式导入它:
df = pd.read_csv('dum.txt',sep='\t', header=[0,1], index_col=0)
这为您提供了数据框:
>>> df
Type T1 T2 T3 T4 T5
Tag Good Good Good Good Good
object1 1.1 2.1 3.1 4.1 5.1
object2 1.2 2.2 3.2 4.2 5.2
object3 1.3 2.3 3.3 4.3 5.3
object4 1.4 2.4 3.4 4.4 5.4
object5 1.5 2.5 3.5 4.5 5.5
object6 1.6 2.6 3.6 4.6 5.6
object7 1.7 2.7 3.7 4.7 5.7
object8 1.8 2.8 3.8 4.8 5.8
您所有的列都是浮点数:
>>> df.dtypes
Type Tag
T1 Good float64
T2 Good float64
T3 Good float64
T4 Good float64
T5 Good float64
dtype: object
它包含一个多索引的列标题:
>>> df.columns
MultiIndex(levels=[['T1', 'T2', 'T3', 'T4', 'T5'], ['Good']],
labels=[[0, 1, 2, 3, 4], [0, 0, 0, 0, 0]],
names=['Type', 'Tag'])
还有一个常规索引,其中包含来自Type
的信息:
>>> df.index
Index(['object1', 'object2', 'object3', 'object4', 'object5', 'object6',
'object7', 'object8'],
dtype='object')
此外,您可以使用以下方法将值转换为numpy
的{{1}}数组:
floats
答案 1 :(得分:3)
将var obj = {
id: 1,
cool() {
console.log( this.id );
}
};
与sep
一起使用,不仅用于制表符,还用于\s
来消除警告:
engine='python'
输出:
df=pd.read_csv('dum.txt',engine='python',sep='\s')
print(df)
或者如果想要两行列(我不建议这样做,因为那样很难使用):
Type T1 T2 T3 T4 T5
0 Tag Good Good Good Good Good
1 object1 1.1 2.1 3.1 4.1 5.1
2 object2 1.2 2.2 3.2 4.2 5.2
3 object3 1.3 2.3 3.3 4.3 5.3
4 object4 1.4 2.4 3.4 4.4 5.4
5 object5 1.5 2.5 3.5 4.5 5.5
6 object6 1.6 2.6 3.6 4.6 5.6
7 object7 1.7 2.7 3.7 4.7 5.7
8 object8 1.8 2.8 3.8 4.8 5.8
输出:
df=pd.read_csv('dum.txt',engine='python',sep='\s',header=[0,1])
print(df)
否则,默认的直接直接 Type T1 T2 T3 T4 T5
Tag Good Good Good Good Good
0 object1 1.1 2.1 3.1 4.1 5.1
1 object2 1.2 2.2 3.2 4.2 5.2
2 object3 1.3 2.3 3.3 4.3 5.3
3 object4 1.4 2.4 3.4 4.4 5.4
4 object5 1.5 2.5 3.5 4.5 5.5
5 object6 1.6 2.6 3.6 4.6 5.6
6 object7 1.7 2.7 3.7 4.7 5.7
(如read_csv
)将返回:
pd.read_csv('dum.txt')