Новичок в Пандах, так что извините, если есть очевидное решение ...
Я импортировал CSV, который имел только 2 столбца, и я создал 3-й столбец.
Вот скриншот из 10 лучших строк и заголовка:
Снимок экрана DataFrame
Я выяснил, как найти минимальное и максимальное значения в столбце ['Amount Changed'], но мне также нужно извлечь дату, связанную с минимальным и максимальным значениями, но не с индексом и ['Прибыль / убыток' ]. Я попробовал iloc, loc, прочитал о groupby - я не могу заставить ни одного из них вернуть одно значение (в данном случае дату), которое я могу использовать снова.
Моя цель - создать новую переменную Gi_Date, которая находится в той же строке, что и максимальное значение в ['Amount Changed'], но привязана к дате в столбце ['Date'].
Я пытаюсь разделить переменные, чтобы использовать их в операторах печати, записывать их в текстовые файлы и т. Д.
import os
import csv
import pandas as pd
import numpy as np
#path for CSV file
csvpath = ("budget_data.csv")
#Read CSV into Panadas and give it a variable name Bank_pd
Bank_pd = pd.read_csv(csvpath, parse_dates=True)
#Number of month records in the CSV
Months = Bank_pd["Date"].count()
#Total amount of money captured in the data converted to currency
Total_Funds = '${:.0f}'.format(Bank_pd["Profit/Losses"].sum())
#Determine the amount of increase or decrease from the previous month
AmtChange = Bank_pd["Profit/Losses"].diff()
Bank_pd["Amount Changed"] = AmtChange
#Identify the greatest positive change
GreatestIncrease = '${:.0f}'.format(Bank_pd["Amount Changed"].max())
Gi_Date = Bank_pd[Bank_pd["Date"] == GreatestIncrease]
#Identify the greatest negative change
GreatestDecrease = '${:.0f}'.format(Bank_pd["Amount Changed"].min())
Gd_Date = Bank_pd[Bank_pd['Date'] == GreatestDecrease]
print(f"Total Months: {Months}")
print(f"Total: {Total_Funds}")
print(f"Greatest Increase in Profits: {Gi_Date} ({GreatestIncrease})")
print(f"Greatest Decrease in Profits: {Gd_Date} ({GreatestDecrease})")
Когда я запускаю скрипт в git bash, я больше не получаю сообщение об ошибке, поэтому думаю, что приближаюсь, а не показываю дату, на которой написано:
$ python PyBank.py
Total Months: 86
Total: $38382578
Greatest Increase in Profits: Empty DataFrame
Columns: [Date, Profit/Losses, Amount Changed]
Index: [] ($1926159)
Greatest Decrease in Profits: Empty DataFrame
Columns: [Date, Profit/Losses, Amount Changed]
Index: [] ($-2196167)
Я хочу напечатать так:
$ python PyBank.py
Total Months: 86
Total: $38382578
Greatest Increase in Profits: Feb-2012 ($1926159)
Greatest Decrease in Profits: Sept-2013 ($-2196167)
Вот годичная датафрейм на один год:
bank_pd = pd.DataFrame({'Date':['Jan-10', 'Feb-10', 'Mar-10', 'Apl-10', 'May-10', 'Jun-10', 'Jul-10', 'Aug-10', 'Sep-10', 'Oct-10', 'Nov-10', 'Dec-10'],
'Profit/Losses':[867884, 984655, 322013, -69417, 310503, 522857, 1033096, 604885, -216386, 477532, 893810, -80353]})
Ожидаемый результат с примером df будет:
Всего месяцев: 12
Всего фондов: $ 5651079
Наибольшее увеличение прибыли: 10 октября ($ 693918)
Наибольшее снижение прибыли: 10 декабря ($ -974163)
У меня также была ошибка в приведенном выше примере кадра данных, мне не хватало месяца, когда я его быстро набрал - сейчас это исправлено.
Спасибо!