Python - determine change in value from one period to the next
Thanks in advance for your help. I am new to Python (and coding in general), and am trying to do several things, with the imported CSV file below. The problem that I am having is capturing (in a list) the change in revenue from one row to the next for example, the change in revenue from 10/18 to 11/18. Ideally, I would have a final list with ["month", "change vs previous"]
.
Here is my existing code:
import os
import csv
csvpath = os.path.join("C:/test2", "budget_data.csv")
num_rows=0
total_rev=0
with open(csvpath, newline="") as csvfile:
csvreader = csv.reader(csvfile, delimiter= ",")
print(csvreader)
csv_header =next(csvreader)
print(f"CSV Header: {csv_header}")
for row in csvreader:
num_rows=num_rows+1
total_rev += int(row[1])
print("")
print("There are "+ str(num_rows) +" months of data!")
print("Total Revenue is "+str(total_rev)+" dollars!")
python list csv import
add a comment |
Thanks in advance for your help. I am new to Python (and coding in general), and am trying to do several things, with the imported CSV file below. The problem that I am having is capturing (in a list) the change in revenue from one row to the next for example, the change in revenue from 10/18 to 11/18. Ideally, I would have a final list with ["month", "change vs previous"]
.
Here is my existing code:
import os
import csv
csvpath = os.path.join("C:/test2", "budget_data.csv")
num_rows=0
total_rev=0
with open(csvpath, newline="") as csvfile:
csvreader = csv.reader(csvfile, delimiter= ",")
print(csvreader)
csv_header =next(csvreader)
print(f"CSV Header: {csv_header}")
for row in csvreader:
num_rows=num_rows+1
total_rev += int(row[1])
print("")
print("There are "+ str(num_rows) +" months of data!")
print("Total Revenue is "+str(total_rev)+" dollars!")
python list csv import
Can you please share a sample of your csv file?
– Mayank Porwal
Nov 26 '18 at 7:19
Thank you for responding. I have attached some anonymized data. It is not the actual data, but is in the exact same format, including the headers.
– Earl
Nov 26 '18 at 13:52
Date Profit/Losses Jan-10 867884 Feb-10 984655 Mar-10 322013 Apr-10 -69417 May-10 310503 Jun-10 522857 Jul-10 1033096 Aug-10 604885 Sep-10 -216386 Oct-10 477532 Nov-10 893810 Dec-10 -80353 Jan-11 779806 Feb-11 -335203 Mar-11 697845 Apr-11 793163 May-11 485070 Jun-11 584122 Jul-11 62729 Aug-11 668179 Sep-11 899906 Oct-11 834719 Nov-11 132003 Dec-11 309978 Jan-12 -755566 Feb-12 1170593 Mar-12 252788 Apr-12 1151518 May-12 817256 Jun-12 570757 Jul-12 506702 Aug-12 -1022534 Sep-12 475062 Oct-12 779976 Nov-12 144175 Dec-12 542494 Jan-13 359333
– Earl
Nov 26 '18 at 13:54
You can use the edit button to add additional information to your question.
– Martin Evans
Nov 27 '18 at 7:17
add a comment |
Thanks in advance for your help. I am new to Python (and coding in general), and am trying to do several things, with the imported CSV file below. The problem that I am having is capturing (in a list) the change in revenue from one row to the next for example, the change in revenue from 10/18 to 11/18. Ideally, I would have a final list with ["month", "change vs previous"]
.
Here is my existing code:
import os
import csv
csvpath = os.path.join("C:/test2", "budget_data.csv")
num_rows=0
total_rev=0
with open(csvpath, newline="") as csvfile:
csvreader = csv.reader(csvfile, delimiter= ",")
print(csvreader)
csv_header =next(csvreader)
print(f"CSV Header: {csv_header}")
for row in csvreader:
num_rows=num_rows+1
total_rev += int(row[1])
print("")
print("There are "+ str(num_rows) +" months of data!")
print("Total Revenue is "+str(total_rev)+" dollars!")
python list csv import
Thanks in advance for your help. I am new to Python (and coding in general), and am trying to do several things, with the imported CSV file below. The problem that I am having is capturing (in a list) the change in revenue from one row to the next for example, the change in revenue from 10/18 to 11/18. Ideally, I would have a final list with ["month", "change vs previous"]
.
Here is my existing code:
import os
import csv
csvpath = os.path.join("C:/test2", "budget_data.csv")
num_rows=0
total_rev=0
with open(csvpath, newline="") as csvfile:
csvreader = csv.reader(csvfile, delimiter= ",")
print(csvreader)
csv_header =next(csvreader)
print(f"CSV Header: {csv_header}")
for row in csvreader:
num_rows=num_rows+1
total_rev += int(row[1])
print("")
print("There are "+ str(num_rows) +" months of data!")
print("Total Revenue is "+str(total_rev)+" dollars!")
python list csv import
python list csv import
edited Nov 26 '18 at 3:33
Ryan Lee
645
645
asked Nov 26 '18 at 2:39
EarlEarl
11
11
Can you please share a sample of your csv file?
– Mayank Porwal
Nov 26 '18 at 7:19
Thank you for responding. I have attached some anonymized data. It is not the actual data, but is in the exact same format, including the headers.
– Earl
Nov 26 '18 at 13:52
Date Profit/Losses Jan-10 867884 Feb-10 984655 Mar-10 322013 Apr-10 -69417 May-10 310503 Jun-10 522857 Jul-10 1033096 Aug-10 604885 Sep-10 -216386 Oct-10 477532 Nov-10 893810 Dec-10 -80353 Jan-11 779806 Feb-11 -335203 Mar-11 697845 Apr-11 793163 May-11 485070 Jun-11 584122 Jul-11 62729 Aug-11 668179 Sep-11 899906 Oct-11 834719 Nov-11 132003 Dec-11 309978 Jan-12 -755566 Feb-12 1170593 Mar-12 252788 Apr-12 1151518 May-12 817256 Jun-12 570757 Jul-12 506702 Aug-12 -1022534 Sep-12 475062 Oct-12 779976 Nov-12 144175 Dec-12 542494 Jan-13 359333
– Earl
Nov 26 '18 at 13:54
You can use the edit button to add additional information to your question.
– Martin Evans
Nov 27 '18 at 7:17
add a comment |
Can you please share a sample of your csv file?
– Mayank Porwal
Nov 26 '18 at 7:19
Thank you for responding. I have attached some anonymized data. It is not the actual data, but is in the exact same format, including the headers.
– Earl
Nov 26 '18 at 13:52
Date Profit/Losses Jan-10 867884 Feb-10 984655 Mar-10 322013 Apr-10 -69417 May-10 310503 Jun-10 522857 Jul-10 1033096 Aug-10 604885 Sep-10 -216386 Oct-10 477532 Nov-10 893810 Dec-10 -80353 Jan-11 779806 Feb-11 -335203 Mar-11 697845 Apr-11 793163 May-11 485070 Jun-11 584122 Jul-11 62729 Aug-11 668179 Sep-11 899906 Oct-11 834719 Nov-11 132003 Dec-11 309978 Jan-12 -755566 Feb-12 1170593 Mar-12 252788 Apr-12 1151518 May-12 817256 Jun-12 570757 Jul-12 506702 Aug-12 -1022534 Sep-12 475062 Oct-12 779976 Nov-12 144175 Dec-12 542494 Jan-13 359333
– Earl
Nov 26 '18 at 13:54
You can use the edit button to add additional information to your question.
– Martin Evans
Nov 27 '18 at 7:17
Can you please share a sample of your csv file?
– Mayank Porwal
Nov 26 '18 at 7:19
Can you please share a sample of your csv file?
– Mayank Porwal
Nov 26 '18 at 7:19
Thank you for responding. I have attached some anonymized data. It is not the actual data, but is in the exact same format, including the headers.
– Earl
Nov 26 '18 at 13:52
Thank you for responding. I have attached some anonymized data. It is not the actual data, but is in the exact same format, including the headers.
– Earl
Nov 26 '18 at 13:52
Date Profit/Losses Jan-10 867884 Feb-10 984655 Mar-10 322013 Apr-10 -69417 May-10 310503 Jun-10 522857 Jul-10 1033096 Aug-10 604885 Sep-10 -216386 Oct-10 477532 Nov-10 893810 Dec-10 -80353 Jan-11 779806 Feb-11 -335203 Mar-11 697845 Apr-11 793163 May-11 485070 Jun-11 584122 Jul-11 62729 Aug-11 668179 Sep-11 899906 Oct-11 834719 Nov-11 132003 Dec-11 309978 Jan-12 -755566 Feb-12 1170593 Mar-12 252788 Apr-12 1151518 May-12 817256 Jun-12 570757 Jul-12 506702 Aug-12 -1022534 Sep-12 475062 Oct-12 779976 Nov-12 144175 Dec-12 542494 Jan-13 359333
– Earl
Nov 26 '18 at 13:54
Date Profit/Losses Jan-10 867884 Feb-10 984655 Mar-10 322013 Apr-10 -69417 May-10 310503 Jun-10 522857 Jul-10 1033096 Aug-10 604885 Sep-10 -216386 Oct-10 477532 Nov-10 893810 Dec-10 -80353 Jan-11 779806 Feb-11 -335203 Mar-11 697845 Apr-11 793163 May-11 485070 Jun-11 584122 Jul-11 62729 Aug-11 668179 Sep-11 899906 Oct-11 834719 Nov-11 132003 Dec-11 309978 Jan-12 -755566 Feb-12 1170593 Mar-12 252788 Apr-12 1151518 May-12 817256 Jun-12 570757 Jul-12 506702 Aug-12 -1022534 Sep-12 475062 Oct-12 779976 Nov-12 144175 Dec-12 542494 Jan-13 359333
– Earl
Nov 26 '18 at 13:54
You can use the edit button to add additional information to your question.
– Martin Evans
Nov 27 '18 at 7:17
You can use the edit button to add additional information to your question.
– Martin Evans
Nov 27 '18 at 7:17
add a comment |
1 Answer
1
active
oldest
votes
You need to add a variable to hold the revenue for the previous row. This is updated at the end of each loop:
import os
import csv
csvpath = os.path.join("C:/test2", "budget_data.csv")
num_rows = 0
total_rev = 0
change_from_previous =
with open(csvpath, newline="") as csvfile:
csvreader = csv.reader(csvfile, delimiter=",")
print(csvreader)
csv_header = next(csvreader)
print(f"CSV Header: {csv_header}")
previous_revenue = 0
for row in csvreader:
revenue = int(row[1])
num_rows += 1
total_rev += revenue
change_from_previous.append([row[0], revenue - previous_revenue])
previous_revenue = revenue
print("")
print("There are "+ str(num_rows) +" months of data!")
print("Total Revenue is "+str(total_rev)+" dollars!")
print(change_from_previous)
This would display a list holding each month and change:
[['Jan-10', 867884], ['Feb-10', 116771], ['Mar-10', -662642], ['Apr-10', -391430], ['May-10', 379920], ['Jun-10', 212354], ['Jul-10', 510239], ['Aug-10', -428211], ['Sep-10', -821271], ['Oct-10', 693918], ['Nov-10', 416278], ['Dec-10', -974163], ['Jan-11', 860159], ['Feb-11', -1115009], ['Mar-11', 1033048], ['Apr-11', 95318], ['May-11', -308093], ['Jun-11', 99052], ['Jul-11', -521393], ['Aug-11', 605450], ['Sep-11', 231727], ['Oct-11', -65187], ['Nov-11', -702716], ['Dec-11', 177975], ['Jan-12', -1065544], ['Feb-12', 1926159], ['Mar-12', -917805], ['Apr-12', 898730], ['May-12', -334262], ['Jun-12', -246499], ['Jul-12', -64055], ['Aug-12', -1529236], ['Sep-12', 1497596], ['Oct-12', 304914], ['Nov-12', -635801], ['Dec-12', 398319], ['Jan-13', -183161]]
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53474110%2fpython-determine-change-in-value-from-one-period-to-the-next%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
You need to add a variable to hold the revenue for the previous row. This is updated at the end of each loop:
import os
import csv
csvpath = os.path.join("C:/test2", "budget_data.csv")
num_rows = 0
total_rev = 0
change_from_previous =
with open(csvpath, newline="") as csvfile:
csvreader = csv.reader(csvfile, delimiter=",")
print(csvreader)
csv_header = next(csvreader)
print(f"CSV Header: {csv_header}")
previous_revenue = 0
for row in csvreader:
revenue = int(row[1])
num_rows += 1
total_rev += revenue
change_from_previous.append([row[0], revenue - previous_revenue])
previous_revenue = revenue
print("")
print("There are "+ str(num_rows) +" months of data!")
print("Total Revenue is "+str(total_rev)+" dollars!")
print(change_from_previous)
This would display a list holding each month and change:
[['Jan-10', 867884], ['Feb-10', 116771], ['Mar-10', -662642], ['Apr-10', -391430], ['May-10', 379920], ['Jun-10', 212354], ['Jul-10', 510239], ['Aug-10', -428211], ['Sep-10', -821271], ['Oct-10', 693918], ['Nov-10', 416278], ['Dec-10', -974163], ['Jan-11', 860159], ['Feb-11', -1115009], ['Mar-11', 1033048], ['Apr-11', 95318], ['May-11', -308093], ['Jun-11', 99052], ['Jul-11', -521393], ['Aug-11', 605450], ['Sep-11', 231727], ['Oct-11', -65187], ['Nov-11', -702716], ['Dec-11', 177975], ['Jan-12', -1065544], ['Feb-12', 1926159], ['Mar-12', -917805], ['Apr-12', 898730], ['May-12', -334262], ['Jun-12', -246499], ['Jul-12', -64055], ['Aug-12', -1529236], ['Sep-12', 1497596], ['Oct-12', 304914], ['Nov-12', -635801], ['Dec-12', 398319], ['Jan-13', -183161]]
add a comment |
You need to add a variable to hold the revenue for the previous row. This is updated at the end of each loop:
import os
import csv
csvpath = os.path.join("C:/test2", "budget_data.csv")
num_rows = 0
total_rev = 0
change_from_previous =
with open(csvpath, newline="") as csvfile:
csvreader = csv.reader(csvfile, delimiter=",")
print(csvreader)
csv_header = next(csvreader)
print(f"CSV Header: {csv_header}")
previous_revenue = 0
for row in csvreader:
revenue = int(row[1])
num_rows += 1
total_rev += revenue
change_from_previous.append([row[0], revenue - previous_revenue])
previous_revenue = revenue
print("")
print("There are "+ str(num_rows) +" months of data!")
print("Total Revenue is "+str(total_rev)+" dollars!")
print(change_from_previous)
This would display a list holding each month and change:
[['Jan-10', 867884], ['Feb-10', 116771], ['Mar-10', -662642], ['Apr-10', -391430], ['May-10', 379920], ['Jun-10', 212354], ['Jul-10', 510239], ['Aug-10', -428211], ['Sep-10', -821271], ['Oct-10', 693918], ['Nov-10', 416278], ['Dec-10', -974163], ['Jan-11', 860159], ['Feb-11', -1115009], ['Mar-11', 1033048], ['Apr-11', 95318], ['May-11', -308093], ['Jun-11', 99052], ['Jul-11', -521393], ['Aug-11', 605450], ['Sep-11', 231727], ['Oct-11', -65187], ['Nov-11', -702716], ['Dec-11', 177975], ['Jan-12', -1065544], ['Feb-12', 1926159], ['Mar-12', -917805], ['Apr-12', 898730], ['May-12', -334262], ['Jun-12', -246499], ['Jul-12', -64055], ['Aug-12', -1529236], ['Sep-12', 1497596], ['Oct-12', 304914], ['Nov-12', -635801], ['Dec-12', 398319], ['Jan-13', -183161]]
add a comment |
You need to add a variable to hold the revenue for the previous row. This is updated at the end of each loop:
import os
import csv
csvpath = os.path.join("C:/test2", "budget_data.csv")
num_rows = 0
total_rev = 0
change_from_previous =
with open(csvpath, newline="") as csvfile:
csvreader = csv.reader(csvfile, delimiter=",")
print(csvreader)
csv_header = next(csvreader)
print(f"CSV Header: {csv_header}")
previous_revenue = 0
for row in csvreader:
revenue = int(row[1])
num_rows += 1
total_rev += revenue
change_from_previous.append([row[0], revenue - previous_revenue])
previous_revenue = revenue
print("")
print("There are "+ str(num_rows) +" months of data!")
print("Total Revenue is "+str(total_rev)+" dollars!")
print(change_from_previous)
This would display a list holding each month and change:
[['Jan-10', 867884], ['Feb-10', 116771], ['Mar-10', -662642], ['Apr-10', -391430], ['May-10', 379920], ['Jun-10', 212354], ['Jul-10', 510239], ['Aug-10', -428211], ['Sep-10', -821271], ['Oct-10', 693918], ['Nov-10', 416278], ['Dec-10', -974163], ['Jan-11', 860159], ['Feb-11', -1115009], ['Mar-11', 1033048], ['Apr-11', 95318], ['May-11', -308093], ['Jun-11', 99052], ['Jul-11', -521393], ['Aug-11', 605450], ['Sep-11', 231727], ['Oct-11', -65187], ['Nov-11', -702716], ['Dec-11', 177975], ['Jan-12', -1065544], ['Feb-12', 1926159], ['Mar-12', -917805], ['Apr-12', 898730], ['May-12', -334262], ['Jun-12', -246499], ['Jul-12', -64055], ['Aug-12', -1529236], ['Sep-12', 1497596], ['Oct-12', 304914], ['Nov-12', -635801], ['Dec-12', 398319], ['Jan-13', -183161]]
You need to add a variable to hold the revenue for the previous row. This is updated at the end of each loop:
import os
import csv
csvpath = os.path.join("C:/test2", "budget_data.csv")
num_rows = 0
total_rev = 0
change_from_previous =
with open(csvpath, newline="") as csvfile:
csvreader = csv.reader(csvfile, delimiter=",")
print(csvreader)
csv_header = next(csvreader)
print(f"CSV Header: {csv_header}")
previous_revenue = 0
for row in csvreader:
revenue = int(row[1])
num_rows += 1
total_rev += revenue
change_from_previous.append([row[0], revenue - previous_revenue])
previous_revenue = revenue
print("")
print("There are "+ str(num_rows) +" months of data!")
print("Total Revenue is "+str(total_rev)+" dollars!")
print(change_from_previous)
This would display a list holding each month and change:
[['Jan-10', 867884], ['Feb-10', 116771], ['Mar-10', -662642], ['Apr-10', -391430], ['May-10', 379920], ['Jun-10', 212354], ['Jul-10', 510239], ['Aug-10', -428211], ['Sep-10', -821271], ['Oct-10', 693918], ['Nov-10', 416278], ['Dec-10', -974163], ['Jan-11', 860159], ['Feb-11', -1115009], ['Mar-11', 1033048], ['Apr-11', 95318], ['May-11', -308093], ['Jun-11', 99052], ['Jul-11', -521393], ['Aug-11', 605450], ['Sep-11', 231727], ['Oct-11', -65187], ['Nov-11', -702716], ['Dec-11', 177975], ['Jan-12', -1065544], ['Feb-12', 1926159], ['Mar-12', -917805], ['Apr-12', 898730], ['May-12', -334262], ['Jun-12', -246499], ['Jul-12', -64055], ['Aug-12', -1529236], ['Sep-12', 1497596], ['Oct-12', 304914], ['Nov-12', -635801], ['Dec-12', 398319], ['Jan-13', -183161]]
answered Nov 27 '18 at 7:45
Martin EvansMartin Evans
28.3k133156
28.3k133156
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53474110%2fpython-determine-change-in-value-from-one-period-to-the-next%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Can you please share a sample of your csv file?
– Mayank Porwal
Nov 26 '18 at 7:19
Thank you for responding. I have attached some anonymized data. It is not the actual data, but is in the exact same format, including the headers.
– Earl
Nov 26 '18 at 13:52
Date Profit/Losses Jan-10 867884 Feb-10 984655 Mar-10 322013 Apr-10 -69417 May-10 310503 Jun-10 522857 Jul-10 1033096 Aug-10 604885 Sep-10 -216386 Oct-10 477532 Nov-10 893810 Dec-10 -80353 Jan-11 779806 Feb-11 -335203 Mar-11 697845 Apr-11 793163 May-11 485070 Jun-11 584122 Jul-11 62729 Aug-11 668179 Sep-11 899906 Oct-11 834719 Nov-11 132003 Dec-11 309978 Jan-12 -755566 Feb-12 1170593 Mar-12 252788 Apr-12 1151518 May-12 817256 Jun-12 570757 Jul-12 506702 Aug-12 -1022534 Sep-12 475062 Oct-12 779976 Nov-12 144175 Dec-12 542494 Jan-13 359333
– Earl
Nov 26 '18 at 13:54
You can use the edit button to add additional information to your question.
– Martin Evans
Nov 27 '18 at 7:17