Вычислить неудачный месяц из заданного csv
Я пытался найти пять худших месяцев из данных, но я не уверен в процессе, так как я очень запутался. Ответ должен быть что-то вроде (июнь 2001, июль 2002 ), но когда я попытался решить эту задачу, мой ответ был не таким, как ожидалось. Только данные за январь были отсортированы. Вот как я пытался решить свой вопрос, и файл данных csv также представлен на скриншоте.
Мое решение приведено ниже:
PATH = "tourist_arrival.csv"
df = pd.read_csv(PATH)
print(df.sort_values(by=['Jan.','Feb.','Mar.','Apr.','May.','Jun.','Jul.','Aug.','Sep.','Oct.','Nov.','Dec.'],ascending=False))

Год,янв.,февр.,мар.,апр.,май,июн.,июл.,авг.,сент.,окт.,нов.,дек.,итого 1992, 17451,27489,31505,30682,29089,22469,20942,27338,24839,42647,32341,27561,334353 1993 ,19238,23931,30818,20121,20585,19602,13588,21583,23939,42242,30378,27542,293567 1994, 21735,24872,31586,27292,26232,22907,19739,27610,27959,39393,28008,29198,326531 1995 ,22207,28240,34219,33994,27843,25650,23980,27686,30569,46845,35782,26380,363395 1996 ,27886,29676,39336,36331,29728,26749,22684,29080,32181,47314,37650,34998,393613 1997,25585,32861,43177,35229,33456,26367,26091,35549,31981,56272,40173,35116,421857 1998,28822,37956,41338,41087,35814,29181,27895,36174,39664,62487,47403,35863,463684 1999,29752,38134,46218,40774,42712,31049,27193,38449,44117,66543,48865,37698,491504 2000,25307,38959,44944,43635,28363,26933,24480,34670,43523,59195,52993,40644,463646 2001,30454,38680,46709,39083,28345,13030,18329,25322,31170,41245,30282,18588,361237 2002,17176,20668,28815,21253,19887,17218,16621,21093,23752,35272,28723,24990,275468 2003,21215,24349,27737,25851,22704,20351,22661,27568,28724,45459,38398,33115,338132 2004,30988,35631,44290,33514,26802,19793,24860,33162,25496,43373,36381,31007,385297 2005,25477,20338,29875,23414,25541,22608,23996,36910,36066,51498,41505,38170,375398 2006,28769,25728,36873,21983,22870,26210,25183,33150,33362,49670,44119,36009,383926 2007,33192,39934,54722,40942,35854,31316,35437,44683,45552,70644,52273,42156,526705 2008,36913,46675,58735,38475,30410,24349,25427,40011,41622,66421,52399,38840,500277 2009,29278,40617,49567,43337,30037,31749,30432,44174,42771,72522,54423,41049,509956 2010,33645,49264,63058,45509,32542,33263,38991,54672,54848,79130,67537,50408,602867 2011,42622,56339,67565,59751,46202,46115,42661,71398,63033,96996,83460,60073,736215 2012,52501,66459,89151,69796,50317,53630,49995,71964,66383,86379,83173,63344,803092 2013,47846,67264,88697,65152,52834,54599,54011,68478,66755,99426,75485,57069,797616
melt ваш DataFrame, а затем sort_values:
output = df.melt("Year", df.drop(["Year", "Total"], axis=1).columns, var_name="Month").sort_values("value").reset_index(drop=True)
>>> output
Year Month value
0 2001 Jun. 13030
1 1993 Jul. 13588
2 2002 Jul. 16621
3 2002 Jan. 17176
4 2002 Jun. 17218
.. ... ... ...
259 2012 Oct. 86379
260 2013 Mar. 88697
261 2012 Mar. 89151
262 2011 Oct. 96996
263 2013 Oct. 99426
[264 rows x 3 columns]
Только за 5 худших месяцев вы можете сделать:
>>> output.iloc[:5]
Year Month value
0 2001 Jun. 13030
1 1993 Jul. 13588
2 2002 Jul. 16621
3 2002 Jan. 17176
4 2002 Jun. 17218