我有一个.csv格式如下:
Year Number
2001 5
2001 10
2003 15
我的目标是获取用户输入(年(,并使用python的panda获取同一年共享的所有数字的平均值。
例如,如果我选择了年份";2001";我应该得到7.5分。
我会获取输入数据,将其转换为"int";,然后相应地过滤您的数据帧,并从[‘Number’]列中获取平均值。
所以它看起来是这样的:
#Preparing the data
import pandas as pd
df=pd.DataFrame()
df['Year']=pd.Series([2001,2001,2003])
df['Number']=pd.Series([5,10,15])
#Take input year from user
x=input(prompt='Please enter a year number: ')
#Filter your df by the input from customer , then select 'Number' column and calculate the mean
df[df['Year']==int(x)]['Number'].mean()
我使用的是我的标准数据帧。
import pandas as pd, numpy as np
df = pd.DataFrame({'Service': np.arange(8),
'Ticket': np.random.rand(8),
'Year' : np.random.randint(2010,2013,8),
'Var_1': np.random.rand(8), # values column
'Var_1_View': 'temp temp temp temp temp temp temp temp'.split(), # header of values of column
'Var_2': np.arange(8),
'Var_2_View': 'pres pres pres pres pres pres pres pres'.split(),
'Var_3': np.arange(8) * 2,
'Var_3_View': 'shift shift shift shift shift shift shift shift'.split(),
'D': np.arange(8) * 5,
'Mess_3': np.random.rand(8),
'Mess_3_View': 'id id id id id id id id'.split(),
'E': np.arange(8)})
df_extract=df.groupby('Year').mean()
df_extract.loc[int(input('Please insert Year...'))]
a = df[df['Year'].eq('Year of interest')].mean()
print(f"{a.to_string()}")
如果你使用这种方法,它会打印出答案,但也会给你一个错误。你可以忽略这个:
warnings.simplefilter(action='ignore', category=FutureWarning)
显然不是一个永久性的解决方案。