Python CSV数据导入到像对象一样的表

时间:2017-11-08 15:17:12

标签: python csv statistics

我有来自csv的数据:

时间,测量,测量2 15:10,10,0.3
15:22,12:0.4
15:30,4


因此每行可以包含不同数量的数据,小于或等于第一行中的列数。
我正在写一些简单的统计应用程序。但是对于一个图,我需要例如列名为meas的数据总和。但是对于第二张图,我想按时过滤这些数据 是否存在任何具有某种对象的现成类,以根据需要使用从列或行获取数据? 或者我只需要将数据保存在行中并动态计算第一个图形的输入?

2 个答案:

答案 0 :(得分:1)

您的问题有点令人困惑,但听起来像Pandas DataFrame会有所帮助。您可以直接读取csv文件。

import pandas as pd
df=pd.read_csv('your_csv_file.csv')

当然,您可能需要熟悉大熊猫才能使用它。

答案 1 :(得分:1)

您正在寻找熊猫图书馆。可在此处找到文档https://pandas.pydata.org/pandas-docs/stable/

您可以运行pip install pandas进行安装。

DataFrame是您使用的基本pandas对象。您可以这样读取数据:

>>> import pandas as pd
>>> df = pd.read_csv(file_name)
>>> df
    time   meas   meas2
0  15:10     10     0.3
1  15:22     12     0.4
2  15:30      4     NaN

>>> df['meas'].sum()
26

此时time将是字符串值。要将它们转换为时间对象,您可以执行此操作(可能有更好的方法):

>>> df['time'] = [x.time() for x in pd.to_datetime(df['time'])]

现在按时过滤......假设你想要第1行之后的所有内容。

>>> time1 = df['time'][1]
>>> df['time'] > time1
0    False
1    False
2     True
Name: time, dtype: bool

您可以使用布尔表达式过滤DataFrame,如下所示:

>>>  df[df['time'] > time0]
       time  meas  meas2
2  15:30:00     4    NaN