Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何用csv代替txt制作图形代码图_Python_Python 2.7 - Fatal编程技术网

Python 如何用csv代替txt制作图形代码图

Python 如何用csv代替txt制作图形代码图,python,python-2.7,Python,Python 2.7,我有一个代码,可以绘制堆叠条形图,它可以从.txt文件导入数据 df = pd.read_table("tiempo.txt",header =None, names = ['Tiempos no Contributivos','Tiempos Contributivos', 'Tiempos Productivos']) df['bar'] = 1 dfgroup = df.groupby('bar').sum() ax = dfgroup [['Tiempos no Contributiv

我有一个代码,可以绘制堆叠条形图,它可以从.txt文件导入数据

df = pd.read_table("tiempo.txt",header =None, names = ['Tiempos no Contributivos','Tiempos Contributivos', 'Tiempos Productivos'])
df['bar'] = 1 
dfgroup = df.groupby('bar').sum()
ax = dfgroup [['Tiempos no Contributivos','Tiempos Contributivos', 'Tiempos Productivos']].plot(kind='bar', title ="Tiempos de obra",
         figsize=(15, 10), legend=True, fontsize=12)
ax.set_xlabel(" ", fontsize=12)
ax.set_ylabel("Tiempo(segundos)", fontsize=12)
plt.show()
这段代码抛出的图形如下所示。

我需要的是让这段代码像以前一样工作,但是我需要它读取一个.csv文件,而不是读取一个.txt文件

当我在阅读部分尝试将.txt文件切换为.csv文件时,发生了这种情况

此代码中使用的数据如下所示(不会全部发布,因为大约有500行)


所以我修复了这个问题,并将函数改为
读取\u csv
。然后我注意到您的csv不是逗号分隔的,而是制表符分隔的。因此,我添加了
delimiter='\t'
read。接下来,我继续并更新了您正在调用的函数,以将
ylabel
xlabel
设置为它们的现代名称。然后,我把你当前的列名输入到绘图中,这样我们就有了一个正确标记的图表

import pandas as pd
import matplotlib.pyplot as plt; plt.rcdefaults()
import numpy as np

df = pd.read_csv("tiempo.txt",header=None,delimiter='\t',names = ['Tiempos no Contributivos','Tiempos Contributivos', 'Tiempos Productivos'])
y_pos = np.arange(len(df.columns))
bars = df.sum(axis=0)

plt.bar(y_pos, bars, align='center', alpha=0.5)
plt.xticks(y_pos, df.columns)
plt.ylabel("Tiempo(segundos)", fontsize=12)
plt.xlabel(" ", fontsize=12)
plt.title('Tiempo')

plt.show()
输出:


您是否尝试过只引用csv文件而不引用tiempo.txt?据我所知,csv文件只是逗号分隔的文本文件是的,这是我尝试的第一件事,但它不起作用。我将编辑代码以显示显示的错误。@JuanPabloMejiaRuiz我可以有一个应该工作的示例数据集吗?这会有很大帮助。@nfnneil如果我在问题中发布一张数据类型的图片,您可以吗?我们需要查看CSV文件本身(纯文本),而不是电子表格版本,如
200160120
等。
read.table
应该能够检测到给定正确文件格式的格式,或者您可以尝试添加
sep=”,“
您的错误消息表明它希望标题行出现在您的数据文件中,但找不到带有标题的列
“Tiempos no Contributivos”
尝试过,但出现了两个问题。1.dfgroup是否定义为我的?2.在我的dfgroup中尝试过,但仍然出现相同的错误。只需通过pastebin.com将您正在使用的文件发送给我即可。并将所有相关打印代码包含在另一个粘贴箱中。这是数据,这是代码。只需更改从中导入数据的源即可data@JuanPabloMejiaRuiz更新。看起来很棒,但仍然有问题。您正在加载的文件仍然是.txt文件。我用我的csv文件试过了,但它读取的数字有问题