将CSV文件读写成适合于excel样式的列/行操作的数据结构


Reading and writing CSV files into a data structure suitable for Excel-style column/row manipulations

所以我目前正在与其他几个人一起为客户端开发一个web应用程序,我们遇到了一个绊脚石。基本上,我们需要能够以特定的布局上传CSV文件-应用程序将根据特定的列和它们的值获取CSV文件,它将执行所需的算法和计算。

输出也将是一个可下载的CSV文件。我们都没有在Python中使用CSV的经验。

CSV文件的布局如下:ID,姓名,地址,郊区,邮编,邮箱,电话

我需要取地址字段,并在计算中使用它来确定如何从特定地址到达目的地。我还需要打印与那个人相关的具体细节。

编辑基本上,CSV文件会包含雇员的细节和他们相关的个人信息。我们的应用程序所做的就是获取这些信息,并根据员工的地址,预测他们到达目的地的最优路线。基本上,我是如何读取CSV文件,然后根据特定列/行编写算法来执行所需的计算。

使用csv标准库模块轻松读取.csv

可以更好地操作.csv文件的一个更有效的库是pandas,您应该先考虑使用这个库。

例如,给定一个csv文件:

csv = r"""col1,col2,col3,col4
          bar,20150301,homer,53
          foo,20150502,bart,102
          barfoo,20150201,lisa,13
          foobar,20150501,marge,97"""

我们可以用csv模块对它进行操作:

import csv # built-in no need to install
from StringIO import StringIO 
with open(StringIO(csv), 'rb') as f:
    reader = csv.reader(f)
    for row in reader:
        # Do whatever you need

同样,对于熊猫:

import pandas as pnd # external, installation required
# returns a dataframe, specify cols, index et cetera 
df = pnd.read_csv(StringIO(csv),
    header=0,
    index_col=["col1", "col3"], 
    usecols=["col1", "col2", "col3"],
    parse_dates=["col2"])
# do dirty things with it.