Проблемы с чтением файла CSV - PullRequest
0 голосов
/ 04 декабря 2018

Я новичок в Python,

Я пытаюсь загрузить столбцы в файл Python и затем отобразить диаграмму, но у меня продолжают появляться миллионы ошибок.

У меня есть CSV-файл с 2 столбцами.

Все, что я пытаюсь сделать, это вызвать столбцы и представить их на графике!Изначально я использовал dataframe, но теперь я здесь после нескольких попыток.

Код

import matplotlib.pyplot as plt
import csv

import pandas as pd
with open('religion.csv') as file:
  reader = csv.reader(file)

  count = 0

  for row in reader:
      print(row)

      if count > 5:
          break
      count +=1


# use the scatter function
#plt.scatter(x, y, alpha=0.5)

x = reader['religions']
y = reader['students']
plt.scatter(x, y, alpha=0.5)

plt.show()

файл Excel

enter image description here

файлы и код

enter image description here

Пример данных

   religions          schuler
Romisch-Katholisch     371
Moslem                 298
Ohne Bekenntnis        182
Serbisch-Orthodox      120
Evangelisch A.B.        26
Rumnisch-Orthodox       15
Sonstige Religion       9

Обновленный код (все еще не работает)

import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_fwf('religion.csv')

df.columns.tolist()
x = df['religions']
y = df['schuler']

df.columns.tolist()
plt.scatter(x, y, alpha=0.5)
plt.show()

расположение папки

enter image description here

Текущая ошибка

KeyError

    Traceback (most recent call last)
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
   3077             try:
-> 3078                 return self._engine.get_loc(key)
   3079             except KeyError:

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'religions'

During handling of the above exception, another exception occurred:

KeyError                                  Traceback (most recent call last)
<ipython-input-6-f2e811496fb9> in <module>()
----> 1 x = df['religions']

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)
   2686             return self._getitem_multilevel(key)
   2687         else:
-> 2688             return self._getitem_column(key)
   2689 
   2690     def _getitem_column(self, key):

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\frame.py in _getitem_column(self, key)
   2693         # get column
   2694         if self.columns.is_unique:
-> 2695             return self._get_item_cache(key)
   2696 
   2697         # duplicate columns & possible reduce dimensionality

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py in _get_item_cache(self, item)
   2487         res = cache.get(item)
   2488         if res is None:
-> 2489             values = self._data.get(item)
   2490             res = self._box_item_values(item, values)
   2491             cache[item] = res

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\internals.py in get(self, item, fastpath)
   4113 
   4114             if not isna(item):
-> 4115                 loc = self.items.get_loc(item)
   4116             else:
   4117                 indexer = np.arange(len(self.items))[isna(self.items)]

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
   3078                 return self._engine.get_loc(key)
   3079             except KeyError:
-> 3080                 return self._engine.get_loc(self._maybe_cast_indexer(key))
   3081 
   3082         indexer = self.get_indexer([key], method=method, tolerance=tolerance)

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas\_libs\index.pyx in pandas._libs.index.IndexEngine.get_loc()

pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.get_item()

KeyError: 'religions'

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

1.При чтении файла CSV вам необходимо указать sep = ';'

df = pd.read_csv("C:/Test/rel.csv", sep=';')

df
Out[417]: 
            religions  schuler
0  Romisch-Katholisch      371
1              Moslem      298
2     Ohne Bekenntnis      182
3   Serbisch-Orthodox      120
4    Evangelisch A.B.       26
5   Rumnisch-Orthodox       15
6   Sonstige Religion        9

2.Вы можете построить его с помощью pd.plot (встроенная функция) в pandas

. В фоновом режиме используется matplotlib, вы можете указать столбцы x & y.(Я использовал график 'bar', но вы можете использовать любой другой тип из эта ссылка ):

df.plot(x='religions', y= 'schuler', kind='bar')


Out[418]: <matplotlib.axes._subplots.AxesSubplot at 0xae7e518>
[Plot image]

Ссылка на изображение: https://i.stack.imgur.com/8u0xs.png

0 голосов
/ 04 декабря 2018

Использование панд и matplotlib - это нормально.Попробуйте импортировать файл CSV следующим образом:

df = pd.read_csv("religion.csv")

Если у вашего CSV нет имен заголовков столбцов, передайте их в виде списка в аргумент name .Также, если вы не хотите, чтобы первый столбец DF был столбцом индекса, установите для параметра index_col значение False.Вы можете проверить документацию, относящуюся к read_csv здесь: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

Затем нанести на график ваши данные с помощью pyplot:

plt.scatter(df['religions'], df['students'])
plt.show() 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...