Чтение файла с пандами и использование коэффициентов корреляции на двух столбцах - PullRequest
0 голосов
/ 24 августа 2018

У меня есть файл вроде следующего без заголовка

 0.000000 0.330001 0.280120 
 1.000000 0.355590 0.298581 
 2.000000 0.305945 0.280231 

Я хочу прочитать этот файл, используя кадр данных pandas, и хочу выполнить коэффициент корреляции между вторым и третьим столбцом.

Я пытаюсь так:

import pandas as pd
df = pd.read_csv('COLVAR_hbondnohead', header=None)
df['1'].corr(df['2'])

Появляется огромное сообщение об ошибке. Я не лечу колонны должным образом? Любое предложение или подсказка?

Сообщение об ошибке

Traceback (most recent call last):
  File "pandas/_libs/index.pyx", line 162, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/hashtable_class_helper.pxi", line 958, in pandas._libs.hashtable.Int64HashTable.get_item
TypeError: an integer is required

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/sbhakat/anaconda3/lib/python3.6/site-packages/pandas/core/indexes/base.py", line 3063, in get_loc
    return self._engine.get_loc(key)
  File "pandas/_libs/index.pyx", line 140, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/index.pyx", line 164, in pandas._libs.index.IndexEngine.get_loc
KeyError: '1'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "pandas/_libs/index.pyx", line 162, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/hashtable_class_helper.pxi", line 958, in pandas._libs.hashtable.Int64HashTable.get_item
TypeError: an integer is required

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/sbhakat/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py", line 2685, in __getitem__
    return self._getitem_column(key)
  File "/home/sbhakat/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py", line 2692, in _getitem_column
    return self._get_item_cache(key)
  File "/home/sbhakat/anaconda3/lib/python3.6/site-packages/pandas/core/generic.py", line 2486, in _get_item_cache
    values = self._data.get(item)
  File "/home/sbhakat/anaconda3/lib/python3.6/site-packages/pandas/core/internals.py", line 4115, in get
    loc = self.items.get_loc(item)
  File "/home/sbhakat/anaconda3/lib/python3.6/site-packages/pandas/core/indexes/base.py", line 3065, in get_loc
    return self._engine.get_loc(self._maybe_cast_indexer(key))
  File "pandas/_libs/index.pyx", line 140, in pandas._libs.index.IndexEngine.get_loc
  File "pandas/_libs/index.pyx", line 164, in pandas._libs.index.IndexEngine.get_loc
KeyError: '1'

Ответы [ 3 ]

0 голосов
/ 24 августа 2018

Вы должны будете указать разделитель, который является пробелом при чтении файла. Затем используйте позицию для доступа к столбцам. Ниже код должен работать.

    df = pd.read_csv('test.txt', sep=' ', header=None)
    df[1].corr(df[2])
0 голосов
/ 24 августа 2018

У вас нет столбцов с именами 1 и 2, поэтому вы должны сначала создать эти столбцы.

import pandas as pd
df = pd.read_csv('COLVAR_hbondnohead', header=None)
df1 = df.reindex(columns=['1','2', '3'])

, а затем

df1['2'].corr(df1['3']) 
0 голосов
/ 24 августа 2018

Рой, что такое расширение файла? это .csv? если это так, вы должны добавить его в конец fileName, например pd.read_csv ('COLVAR_hbondnohead.csv', header = None)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...