在Python中导入CSV并操纵数据

时间:2017-03-01 19:21:05

标签: python list csv

我是编程新手,我需要做一些(也许是非常基本的)东西,但我真的很挣扎。 我有一些CSV文件,当在excel中打开时,它包含1500行和500列,除了第一行的第一个元素(某种标题)之外的所有数字。我需要做一些事情,比如前60行的元素,并添加和减去完整的行。

我在导入文件时遇到了一些麻烦。当我只使用readcsv然后将它们添加到空数据集行时,我得到所需的格式(行列表?)但所有元素都是字符串而不是浮点数(可能是因为文件中的第一个元素是字符串?)我不能让他们转换成花车所以也许你可以帮助我一点点。

另一件事是我如何实际操作数据的某个部分,比如循环经过一定数量的行。我无法弄明白,因为字符串上的数学事物不起作用。

提前感谢您的帮助和评论!

3 个答案:

答案 0 :(得分:1)

我使用以下内容并且工作正常:

import numpy 
csv = numpy.loadtxt('something.csv', delimiter = ',')

如果你想跳过第一行,你可以这样做:

csv = numpy.loadtxt('something.csv', delimiter = ',', skiprows = 1)

如果你想在前60行操作:

X = csv[:60,:]

然后您只需使用X即可。 希望它有所帮助

答案 1 :(得分:0)

我不认为如果第一个单元格是字符串整列是字符串类型...那可能是该列的标签。尝试访问第二行中的数据或明确命名列

例如

df = pd.DataFrame({'$a':[1,2], '$b': [10,20]})
print df

输出

   $a  $b
0   1   10
1   2   20

您可以通过

更改列的名称
df.columns = ['a', 'b']

输出

    a   b
0   1   10
1   2   20

更改名称后,您可以按df [' a']或af [' b']

访问该列

答案 2 :(得分:0)

您需要的是pandas数据框中的read_csv

  1. 以下代码会自动识别您的标题并将标题设置为列名。

    import pandas as pd
    data = pd.read_csv('Your file name.csv')
    
  2. 关于数据字符串格式的问题,没有一些示例数据就无法帮助您。

  3. 我需要对前60行的元素进行平均,然后添加和减去完整的行。

    对于前60行的平均值,您可以执行以下操作:

       import pandas as pd
    
       lst1 = range(100)
       lst2 = range(100,200)
       lst3 = range(200,300)
    
       data = pd.DataFrame({'a': lst1,'b': lst2,'c': lst3})
       data_avrg = data[:60].mean()
    
       In[20]:data_avrg
       Out[20]: 
       a     29.5
       b    129.5
       c    229.5
       dtype: float64
    

    如果要向整行添加或减去60行的平均值,就像列a中的所有行一样,您可以这样做:

      data['a_add'] = data.a + data_avrg.a
      data['a_subtract'] = data.a - data_avrg.a