python-3.x - 读取 CSV 文件时出现问题
问题描述
我是 Python 新手,
我正在尝试将列加载到 python 文件中,然后显示一个图表,但我不断收到数百万个错误。
我有一个包含 2 列的 csv 文件。
我要做的就是调用列并将其呈现在图表上!我最初使用数据框,但经过多次尝试现在我在这里。
代码
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文件
文件和代码
样本数据
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()
文件夹位置
当前错误
键错误
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'
解决方案
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 列。(我使用了“条形”图,但您可以使用此参考中的任何其他类型):
df.plot(x='religions', y= 'schuler', kind='bar')
Out[418]: <matplotlib.axes._subplots.AxesSubplot at 0xae7e518>
[Plot image]
推荐阅读
- mongodb - 无法连接到 MongoDB Atlas (queryTxt ETIMEOUT)
- swift - 在可重复使用的 UIViewController 中实例化内容
- apache-kafka - Kafka 到 Flink 消息处理问题
- reactjs - 当没有选项与用户搜索值匹配时 React-select 默认值
- rust - 对“Rust and WebAssembly”网站上的教程感到困惑
- excel - 在下拉列表中选择某个字符串/数字时,仅将某些单元格导出为 PDF
- javascript - 如何在真正的 Javascript 编码测试中避免嵌套循环
- java - 如何暂停 AnimationTimer 设定的秒数?
- c++ - C ++中的“声明没有存储类或类型说明符”
- scala - How to add letter to the beginning of each string element of the array?