我想计算给定数据中存在的序列数。
我需要此信息来计算时间序列。
在这里,我希望用户选择如何检查序列。
例如系列可以是地区>产品>国家/地区(请同时选择此代码)
现在,系列是:
所以我需要答案为'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()))
注意:上面代码中使用的层次结构是地区>国家/地区>产品
是否可以在不创建新的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)
答案 0 :(得分:1)
IIUC,您想要GroupBy.ngroups
:
df.groupby(['Region','Country','Sales']).ngroups
#8 Output