Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从CSV文件的原始onr获取每个日期条目的计数_Python_Csv_Datetime - Fatal编程技术网

Python 从CSV文件的原始onr获取每个日期条目的计数

Python 从CSV文件的原始onr获取每个日期条目的计数,python,csv,datetime,Python,Csv,Datetime,我正在使用python从CSV文件中获取值并创建图表。 如何获取每个日期的条目数?例如,示例日期行: 4/14/2016 11:05:15 AM 4/14/2016 09:06:15 PM 6/14/2016 11:05:15 AM 它应该给出如下输出: 4/14/2016 entry 2 times 6/14/2016 entry 1 time 只需计算日期: import csv from collections import Counter c = Counter() with

我正在使用python从CSV文件中获取值并创建图表。 如何获取每个日期的条目数?例如,示例日期行:

4/14/2016  11:05:15 AM
4/14/2016  09:06:15 PM
6/14/2016  11:05:15 AM
它应该给出如下输出:

4/14/2016 entry 2 times
6/14/2016 entry 1 time

只需计算日期:

import csv
from collections import Counter

c = Counter()
with open('somefile.csv') as f:
   reader = csv.reader(f, delimiter='\t')
   for row in reader:
      c.update(row[0])

for date,count in c.most_common():
   print('{} {}'.format(date, count))

只需计算日期:

import csv
from collections import Counter

c = Counter()
with open('somefile.csv') as f:
   reader = csv.reader(f, delimiter='\t')
   for row in reader:
      c.update(row[0])

for date,count in c.most_common():
   print('{} {}'.format(date, count))

您可以使用
itertools.groupby

with open("your_file.csv") as f:
    for x,y in itertools.groupby(sorted(map(str.split, f.read().strip().split("\n"))), key = lambda x:x[0]):
        print x,len(list(y))
输出

4/14/2016 2
6/14/2016 1
另一种方法:如果csv包含空行

with open("your_file.csv") as f:
    my_list = []
    for line in f:
        if line:
            my_list.append(line.strip().split())
    for x,y in itertools.groupby(sorted(my_list, key=lambda x:x[0]), key=lambda x:x[0]):
        print x, len(list(y))

您可以使用
itertools.groupby

with open("your_file.csv") as f:
    for x,y in itertools.groupby(sorted(map(str.split, f.read().strip().split("\n"))), key = lambda x:x[0]):
        print x,len(list(y))
输出

4/14/2016 2
6/14/2016 1
另一种方法:如果csv包含空行

with open("your_file.csv") as f:
    my_list = []
    for line in f:
        if line:
            my_list.append(line.strip().split())
    for x,y in itertools.groupby(sorted(my_list, key=lambda x:x[0]), key=lambda x:x[0]):
        print x, len(list(y))

您可以使用
defaultdict
获取值和计数:

import collections

d=collections.defaultdict(list)

with open('data', 'r') as f:
    for line in map(lambda line:line.strip(), f.readlines()):
        row=line.split()
        d[row[0]].append(row[1])
print(d)
for key, value in d.items():
    print(key+' has the following '+str(len(value))+' entries/entry: '+str(value))
输出:

$ cat data 
4/14/2016  11:05:15 AM
4/14/2016  09:06:15 PM
6/14/2016  11:05:15 AM
$ python p.py 
defaultdict(<type 'list'>, {'4/14/2016': ['11:05:15', '09:06:15'], '6/14/2016': ['11:05:15']})
4/14/2016 has the following 2 entries/entry: ['11:05:15', '09:06:15']
6/14/2016 has the following 1 entries/entry: ['11:05:15']
$cat数据
2016年4月14日上午11:05:15
2016年4月14日09:06:15下午
2016年6月14日上午11:05:15
$python p.py
defaultdict(,{'4/14/2016':['11:05:15','09:06:15'],'6/14/2016':['11:05:15']})
2016年4月14日有以下两个条目:['11:05:15','09:06:15']
2016年6月14日有以下1个条目:['11:05:15']

您可以使用
defaultdict
获取数值和计数:

import collections

d=collections.defaultdict(list)

with open('data', 'r') as f:
    for line in map(lambda line:line.strip(), f.readlines()):
        row=line.split()
        d[row[0]].append(row[1])
print(d)
for key, value in d.items():
    print(key+' has the following '+str(len(value))+' entries/entry: '+str(value))
输出:

$ cat data 
4/14/2016  11:05:15 AM
4/14/2016  09:06:15 PM
6/14/2016  11:05:15 AM
$ python p.py 
defaultdict(<type 'list'>, {'4/14/2016': ['11:05:15', '09:06:15'], '6/14/2016': ['11:05:15']})
4/14/2016 has the following 2 entries/entry: ['11:05:15', '09:06:15']
6/14/2016 has the following 1 entries/entry: ['11:05:15']
$cat数据
2016年4月14日上午11:05:15
2016年4月14日09:06:15下午
2016年6月14日上午11:05:15
$python p.py
defaultdict(,{'4/14/2016':['11:05:15','09:06:15'],'6/14/2016':['11:05:15']})
2016年4月14日有以下两个条目:['11:05:15','09:06:15']
2016年6月14日有以下1个条目:['11:05:15']

你确定这样行吗?它给了我输出:/6 1 6 4 5 6 4 0 3 2 3如果您的csv格式与您提到的一样,它将起作用;您需要根据文件中的分隔符调整分隔符。在我的示例中,分隔符是一个选项卡
\t
。我认为它仍然不起作用,您应该将
行[0]
更改为
行[0:1]
是否确实有效?它给了我输出:/6 1 6 4 5 6 4 0 3 2 3如果您的csv格式与您提到的一样,它将起作用;您需要根据文件中的分隔符调整分隔符。在我的示例中,分隔符是一个选项卡
\t
。我认为它仍然不起作用,您应该将
行[0]
更改为
行[0:1]
谢谢:)可以很好地处理csv的少量条目(测试了10个条目)。但对于第行下方的150个条目,itertools.groupby(已排序(map(str.split,f.read().strip().split(“\n”)),key=lambda x:x[0]):Thank:)中的x,y的“索引器:列表索引超出范围”
。但对于第行下面的150个条目,在itertools.groupby(已排序(map(str.split,f.read().strip().split(“\n”))中的x,y出现错误“索引器错误:列表索引超出范围”
):