fredapi icon indicating copy to clipboard operation
fredapi copied to clipboard

How would I write columns of a series to an Excel file with this?

Open ghost opened this issue 8 years ago • 3 comments

Basically, I am having trouble writing columns to an Excel file from a series in Fred. My issue is in the last line of the dataget function, where I have tried many things, and each give an error.

from fredapi import Fred
import pandas as pd
import time

#key = blah

API_KEY = "blah"
fred = Fred(api_key = API_KEY)

#Format = (id, description)
data_list = [('SP500', 'Stock Exchange Index'), ('UNRATE', 'Civilian Unemployment Rate')]



def dataget (id,description):
	#get a series
	values = fred.get_series(id, observation_start='1/01/2012')

	#make an Excelwriter in a workbook called "FRED_DATA"
	writer = pd.ExcelWriter('FRED_Data', engine='xlsxwriter')

	#Create a custom sheet with (`description` + data) as the worksheet name. 
	values.to_excel(writer, str(description + " Data"))
	
	#BUT I WANT THAT LINE^ TO INCLUDE COLUMNS, so something like this...
	#values.to_excel(writer, str(description + "data"),columns = (date, description))

#Break each (series_id, name) tupple into a an (id,description) pair
for tupple in data_list:
	id = tupple[0]
	description = tupple[1]
	#call dataget on this pair
	dataget(id,description)


	
	

`

ghost avatar Jul 03 '17 19:07 ghost

what error do you get?

mortada avatar Jul 05 '17 00:07 mortada

Well, it just does not work when I do what I commented: the columns don't show up.

On Jul 4, 2017 8:07 PM, "Mortada Mehyar" [email protected] wrote:

what error do you get?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/mortada/fredapi/issues/19#issuecomment-312968856, or mute the thread https://github.com/notifications/unsubscribe-auth/AP7npoQsIcQtsZT8GpEbV97os89VDJBRks5sKtO-gaJpZM4OMnRc .

ghost avatar Jul 05 '17 00:07 ghost

@joshash I think the easiest would be a DataFrame, I think. For example, the following would put a DataFrame with your descriptions as the column names, and then write the result out to Excel:

values = pd.DataFrame({description:fred.get_series(id, observation_start='1/1/2012') for id, description in data_list})
values.to_excel('/Fred_Data.xlsx', sheet_name='FRED Data')

If you really want the data in different sheets (why?) then replace values.to_excel call in your example with values.to_frame().rename(columns={0:description}).to_excel(...)

I suggest referring at the Pandas documentation for more about Series and DataFrame.

Liam3851 avatar Jul 05 '17 17:07 Liam3851