2017-03-01 62 views
0

我是编程新手,需要做一些(也许非常基本的)工作,但是我非常努力。 我有一些CSV文件,当在Excel中打开时,它有1500行和500列以及除第一行(某种头)的第一个元素之外的所有数字。我需要做的东西就像在前60行的元素上添加和减少完整的行。在Python中导入CSV并操纵数据

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

另一件事是我如何实际操纵数据的某个部分,如循环经过一定数量的行。我无法真正理解它,因为字符串上的数学事物不工作。

在此先感谢您的帮助和意见!

+1

它将帮助,如果你发布你正在使用的代码。你检查过模块'pandas'吗?它被设计用于数据操作。 – MattR

回答

1

我用下面的,它工作正常:

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

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

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

如果你想在工作第60行:

X = csv[:60,:] 

然后你只需要使用X你想要的东西。 希望它有帮助

0

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

例如

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访问列[“一”]或AF [“B”]

+0

是的,熊猫是一个很好的方法,但它有500列,你怎么能通过名字访问它们?只是说:P – CrisH

+0

coool:D但很快我们应该找到一种可以标记数据集的方法:D;) – Berry

0

你需要的是大熊猫数据帧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行平均减去到整个行,就像在列中的所有行,你可以这样做:

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

非常感谢!它现在实际上很好地导入它,我可以使用它! –