繁体   English   中英

如何通过python在csv文件中分配一列?

[英]How do I assign a column in a csv file by python?

我有一个要绘制的 CSV 文件。
但是,要获得此图,我需要先将一列分配给列表(或数组),然后从那里继续。 我需要将第一列分配给所述列表。 在上述列中,数字 1 到 45 有很多重复(所以在代码中应该是range(1,46) )。 目前,我到目前为止已经写了这个:

for weekly sales against Date 
    import matplotlib.pyplot as plt
    import numpy as np
    import pandas as pd
    %matplotlib inline

a = []

for stn in range(1,46):
    a.append(walmart[walmart.Store == stn])

for printval in range(1,46):
    b = a[printval-1]

注意: walmart (与数据集关联的值)已经被pd.read_csv读取到这里。 它有效并且已经产生了输出。

我不知道该怎么做。 我也想根据商店来绘制这个图。

数据集可以在:https ://www.kaggle.com/divyajeetthakur/walmart-sales-prediction

有很多方法可以做到这一点,但想到的最简单的方法是使用Pandas 数据框

首先,您需要在您的环境中安装它。 我看到你标记了anaconda所以这将是这样的:

$ conda install pandas

然后将它们导入你的 python 文件(假设是 Jupyter notebook)

import pandas as pd

然后,您可以使用read_csv函数中的构建将 csv 导入数据帧(您可以用它做很多很酷的事情,因此请查看文档

在您的情况下,假设您只想导入列说数字 3 和 5,然后绘制它们。 如果 csv 中的第一行包含标题(比如'col3''col5' ),这应该被自动读取并存储为列名(如果你想跳过标题阅读添加选项skiprows=1 ,如果你想names=['newname3', 'newname5']名为其他names=['newname3', 'newname5']的列使用选项names=['newname3', 'newname5']

data = pd.read_csv('path/to/my.csv', usecols=[3,5], names=['col1', 'col2'])

然后您可以按名称访问列并使用data['colname']绘制它们:

import matplotlib.pyplot as plt 
plt.scatter(data['col1'], data['col2'])
plt.show()

或者您可以使用熊猫数据框的内置功能

data.plot.scatter(x='col1', y='col2)

我已经发现我需要做些什么才能让它发挥作用。 下面的代码描述了我的情况。

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
%matplotlib inline

a = []

for stn in range(1,46):
    a.append(walmart[walmart.Store == stn])

for printval in range(1,46):
    b = a[printval-1]
    w = b[b.Store == printval]
    ws = w["Weekly_Sales"]
    tp = w["Date"]
    plt.scatter(tp, ws)
    plt.xlabel('Date')
    plt.ylabel('Weekly Sales')
    plt.title('Store_' + str(printval))
    plt.savefig('Store_'+ str(printval) + '.png')   #To save the file if needed
    plt.show()

同样,我已经导入了 CSV 文件,并将其关联到walmart 这样做时没有错误。

同样,数据集可以在https://www.kaggle.com/divyajeetthakur/walmart-sales-prediction 中找到。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM