计算python pandas中的系列数

Posted

技术标签:

【中文标题】计算python pandas中的系列数【英文标题】:Calulating number of series in python pandas 【发布时间】:2020-03-12 18:14:03 【问题描述】:

我想计算给定数据中存在的系列数。

我需要这些信息来计算时间序列

在这里我希望用户选择如何检查系列。

例如系列可以是地区 > 产品 > 国家/地区(此代码也请选择此选项)

现在,系列是:

    亚洲 > A > 印度 亚洲 > A > 泰国 亚洲 > B > 印度 亚洲 > B > 泰国 亚洲 > D > 日本 欧洲 > A > 意大利 欧洲 > A > 土耳其 欧洲 > B > 意大利

所以我需要一个“8”的答案,因为所选层次结构有 8 个系列。

通过将 CSV 转换为 excel 然后计算所有系列,我成功地做到了这一点。但是如果我有大数据,那是非常耗时的。

import pandas as pd
import numpy as np

df = pd.read_csv("data.csv")
state = df.unstack('Sales')
set1= list(set(state))

pivot = pd.pivot_table(df,index=["Region","Country","Product"],values="Sales",aggfunc=np.sum)
df1 = pd.DataFrame(pivot)
df1.to_excel("output.xlsx")

df2 = pd.read_excel("output.xlsx")

cols = list(df2.columns)
count_TS = 0
for i in cols:
    if i =="":
        continue
    count_TS += df2[i].count()


print("Total Timeseries = ",count_TS + 1 -(df2['Sales'].count()))

注意:以上代码中使用的层次结构是Region > Country > Product

是否可以在不创建新的 excel 文件的情况下执行此操作?

这是给你的 numpy 数组:

array([['Asia', 'India', 'A', 200],
       ['Asia', 'Thailand', 'A', 150],
       ['Asia', 'India', 'B', 175],
       ['Asia', 'Thailand', 'B', 225],
       ['Asia', 'Japan', 'D', 325],
       ['Europe', 'Italy', 'A', 120],
       ['Europe', 'Turkey', 'A', 130],
       ['Europe', 'Italy', 'B', 160]], dtype=object)

【问题讨论】:

len(df.groupby(["Region","Country","Product"])) 请检查我的答案:) 【参考方案1】:

IIUC,你要GroupBy.ngroups

df.groupby(['Region','Country','Sales']).ngroups
#8 Output

【讨论】:

以上是关于计算python pandas中的系列数的主要内容,如果未能解决你的问题,请参考以下文章

使用 Pandas Python 的连续输赢

Pandas系列之入门篇

利用Python进行数据分析_Pandas_汇总和计算描述统计

Python pandas计算时间,直到列中的值大于当前期间

python:pandas计算时间差

Python pandas:在我的数据框中添加一个计算变量的列