使用Python

时间:2018-09-26 01:19:23

标签: python python-2.7 pandas numpy

我有一个 .txt 文件,其中包含文本数据和数字数据。文件的前两行具有文本数据形式的基本信息,而第一列(我将第零列称为第一列)也具有文本形式的基本数据。在文件的所有其他位置,数据均为数字形式。我希望使用python中的库(最好是numpy或pandas或两者结合使用)来分析文件中存在的数值数据(分析,如回归,相关性,scikit-learn等)。我重申文件中的所有数据对我来说是必不可少的。以下快照(取自Excel)显示了数据的格式的截短版本:enter image description here

此快照中显示的数据可以找到here.

特别是,我想要的是能够使用python(numpy或pandas)从该文件中导入所有数值数据,并能够使用前两行中的文本数据引用此数据中的特定行(类型,标签)和第一列(对象编号)。在我的实际数据文件中,我有成千上万的行(对象类型)和数十列。

我已经尝试使用numpy.loadtxt(...)pandas.read_csv(...)打开该文件,但是我遇到了错误,或者以笨拙的格式加载了数据。对于如何以某种方式在python中导入文件,以使我拥有自己想要的功能,我将深表感激。

2 个答案:

答案 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')