Pandas-Dataframe:如何计算变量在1分钟内重复的次数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas-Dataframe:如何计算变量在1分钟内重复的次数相关的知识,希望对你有一定的参考价值。

我有以下数据帧代码段:

Full dataframe:                   ip      time      cik  crawler
ts                                                              
2019-03-11 00:00:01   71.155.177.ide  00:00:01  1262327      0.0
2019-03-11 00:00:02   71.155.177.ide  00:00:02  1262329      0.0
2019-03-11 00:00:05   69.243.218.cah  00:00:05   751200      0.0
2019-03-11 00:00:08  172.173.121.efb  00:00:08   881890      0.0
2019-03-11 00:00:09   216.254.60.idd  00:00:09  1219169      0.0
2019-03-11 00:00:09    64.18.197.gjc  00:00:09  1261705      0.0
2019-03-11 00:00:09    64.18.197.gjc  00:00:09  1261734      0.0
2019-03-11 00:00:10    64.18.197.gjc  00:00:10  1263094      0.0
2019-03-11 00:00:10    64.18.197.gjc  00:00:10  1264242      0.0
2019-03-11 00:00:10    64.18.197.gjc  00:00:10  1264242      0.0

我想按IP分组,然后使用一些函数来计算:

1)1分钟内每个IP有多少个唯一的CIK

2)1分钟内每个IP有多少个CIK(总计)。

我尝试了重新采样功能,但我不知道如何按照我想要的方式计算它。我的代码如下:

dataframe = pd.read_csv(path + "log20060702.csv", usecols=['cik', 'ip', 'time', 'crawler'])
dataframe = dataframe[dataframe['crawler'] == 0]
dataframe['cik'] = pd.to_numeric(dataframe['cik'], downcast='integer')
dataframe['ts'] = pd.to_datetime((dataframe['time']))

dataframe = dataframe.set_index(['ts'])
print("Full dataframe: ", dataframe.head(10))

df_dict = dataframe.groupby("ip")
counter = 0
for key, df_values in df_dict:
    counter += 1
    print("df values: ", df_values)
    # df_values = df_values.resample("5T").count()
    if counter == 5:
        break

或者,如果有人能告诉我如何通过IP分组,每1分钟一次,其余的我可以自己做。我不一定要找到完整的解决方案,我们非常感谢一些指导。

答案

使用groupbyDataFrameGroupBy.resample和聚合SeriesGroupBy.nuniqueDataFrameGroupBy.size计数:

df = dataframe.groupby("ip").resample('1Min')['cik'].agg(['nunique','size'])
print (df)
                            nunique  size
ip              ts                       
172.173.121.efb 2019-03-11        1     1
216.254.60.idd  2019-03-11        1     1
64.18.197.gjc   2019-03-11        4     5
69.243.218.cah  2019-03-11        1     1
71.155.177.ide  2019-03-11        2     2

或者使用Grouper

df = dataframe.groupby(["ip", pd.Grouper(freq='1Min')])['cik'].agg(['nunique','size'])
print (df)
                            nunique  size
ip              ts                       
172.173.121.efb 2019-03-11        1     1
216.254.60.idd  2019-03-11        1     1
64.18.197.gjc   2019-03-11        4     5
69.243.218.cah  2019-03-11        1     1
71.155.177.ide  2019-03-11        2     2

以上是关于Pandas-Dataframe:如何计算变量在1分钟内重复的次数的主要内容,如果未能解决你的问题,请参考以下文章

大数据清洗4(pandas-DataFrame常用操作)

Pandas-DataFrame基础知识点总结

如何使用计算的龟拥有变量A来计算不同的龟拥有变量B.

环境变量 | 如何理解 windows计算机中的环境变量,以及配置Java环境时配置的环境变量?

如何计算long long类型变量中的位数? [重复]

如何根据另一个变量的值计算变量的平均值?