2017-02-04 7 views
-3

Laden Sie die Energiedaten aus der Datei Energieindikatoren.xls, die eine Liste der Indikatoren für die Energieversorgung und die Erzeugung erneuerbarer Elektrizität von den Vereinten Nationen für das Jahr 2013 darstellt, in einen Datenrahmen mit der Variablen Energie.Wie man ein Excelblatt lädt und die Daten in Python säubert?

Beachten Sie, dass dies eine Excel-Datei ist und keine durch Komma getrennte Wertedatei. Stellen Sie außerdem sicher, dass die Fußzeilen- und Kopfzeileninformationen aus der Datendatei ausgeschlossen werden. Die ersten zwei Spalten sind nicht notwendig, daher sollten Sie sie loswerden, und Sie sollten die Spaltenbeschriftungen so ändern, dass die Spalten wie folgt lauten:

['Land', 'Energieversorgung', 'Energieversorgung pro Kopf', ' % Renewable '] Konvertieren Sie die Energiezufuhr in Gigajoule (es gibt 1.000.000 Gigajoule in einem Petajoule). Stellen Sie für alle Länder, in denen Daten fehlen (z. B. Daten mit "..."), sicher, dass dies als np.NaN-Werte wiedergegeben wird.

Benennen Sie die folgende Liste der Länder (für spätere Fragen): „Republik Korea“: „Südkorea“, „Vereinigte Staaten von Amerika“: „Vereinigten Staaten“, „Vereinigtes Königreich von Großbritannien und Nordirland ":" Vereinigtes Königreich ", " China, Sonderverwaltungsregion Hongkong ":" Hongkong "

Es gibt auch mehrere Länder mit Zahlen und/oder Klammern in ihrem Namen. Achten Sie darauf, diese zu entfernen, z. B. . "Bolivien (plurinationaler Staat)" sollte "Bolivien" sein, "Schweiz17" sollte "Schweiz" sein.

Als nächstes laden Sie die BIP-Daten aus der Datei world_bank.csv, die ein csv enthält Länder BIP von 1960 bis 2015 von der Weltbank. Nennen Sie diesen DataFrame GDP. Überspringen Sie die Kopfzeile und benennen Sie die folgende Länderliste um: "Korea, Rep.": "Südkorea", "Iran, Islamische Rep.": "Iran", "Hong Kong SAR, China" : "Hong Kong"

Laden Sie abschließend die Sciamgo Journal und Country Rank Daten für Energy Engineering und Power Technology aus der Datei scimagojr-3.xlsx, die Länder auf der Grundlage ihrer Beiträge im oben genannten Bereich rangiert. Nennen Sie dieses DataFrame ScimEn.

Verbinden Sie die drei Datensätze: BIP, Energie und ScimEn in einen neuen Datensatz (die Kreuzung der Ländernamen verwenden). Verwenden Sie nur die letzten 10 Jahre (2006-2015) der BIP-Daten und nur die Top 15 Länder nach Scimagojr 'Rank' (Rang 1 bis 15).

Der Index dieses DataFrame sollte der Name des Landes sein, und die Spalten sollten ['Rang', 'Dokumente', 'Zitable Dokumente', 'Zitate', 'Selbstzitate', 'Zitate pro Dokument sein ',' H-Index ',' Energieversorgung ',' Energieversorgung pro Kopf ','% Erneuerbare ',' 2006 ',' 2007 ',' 2008 ',' 2009 ',' 2010 ',' 2011 ',' 2012 "," 2013 "," 2014 "," 2015 "]. Diese Funktion sollte einen Datenrahmen mit 20 Spalten und 15 Einträgen zurückgeben

.

Ich habe den folgenden Code für diese Frage versucht, aber es ist nur 12 Zeilen statt 15 Rückkehr:

import pandas as pd 

from pandas import ExcelWriter 

from pandas import ExcelFile 

pd.set_option('display.max_columns', None) 

pd.set_option('display.max_rows', None) 

Energy = pd.read_excel('Energy Indicators.xls') 

Energy.drop(Energy.columns[[0,1]],axis=1,inplace=True) 

Energy.columns=['Country','Energy Supply','Energy Supply per capita','% Renewable'] 

Energy['Energy Supply']*=1000000 

Energy['Country'] = Energy['Country'].str.replace(r"\(.*\)","") 

Energy['Country'] = Energy['Country'].str.replace("[0-9()]+$", "") 

Energy.replace('Republic of Korea','South Korea', inplace = True) 

Energy.replace('United States of America','United States', inplace = True) 

Energy.replace('United Kingdom of Great Britain and Northern Ireland','United Kingdom', inplace = True) 

Energy.replace('China, Hong Kong Special Administrative Region','Hong Kong', inplace = True) 

import pandas as pd 

GDP = pd.read_csv('world_bank.csv', index_col=0, header=None) 

GDP = GDP.drop(['Data Source']) 

GDP = GDP.dropna() 

GDP = GDP.reset_index() 

GDP.columns = GDP.iloc[0] 

GDP.drop(GDP.index[[0,3]], inplace=True) 

GDP = GDP.rename(columns={'Country Name': 'Country'}) 

GDP.replace(',','-', inplace=True) 

GDP = GDP.replace('Korea, Rep.','South Korea') 

GDP = GDP.replace('Iran, Islamic Rep.','Iran') 

GDP = GDP.replace('Hong Kong SAR, China','Hong Kong') 


import pandas as pd 

from pandas import ExcelWriter 

from pandas import ExcelFile 

pd.set_option('display.max_columns', None) 

pd.set_option('display.max_rows', None) 

ScimEn = pd.read_excel('scimagojr-3.xlsx') 


b = pd.merge(pd.merge(Energy,GDP,on='Country'),ScimEn,on='Country') 

a = pd.merge(pd.merge(Energy,GDP,on='Country'),ScimEn,on='Country') 

a = a.sort(['Rank'], ascending=[True]) 

a = a[a["Rank"] < 16] 

a=a.rename(columns = {'2006.0':'abc'}) 

a.columns.values[53] = "2006" 

a.columns.values[54] = "2007" 

a.columns.values[55] = "2008" 

a.columns.values[56] = "2009" 

a.columns.values[57] = "2010" 

a.columns.values[58] = "2011" 

a.columns.values[59] = "2012" 

a.columns.values[60] = "2013" 

a.columns.values[61] = "2014" 

a.columns.values[62] = "2015" 


a = a[['Country','Rank', 'Documents', 'Citable documents', 'Citations', 'Self-citations', 'Citations per document', 'H index', 'Energy Supply', 'Energy Supply per capita', '% Renewable', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015']] 


a = a.set_index('Country') 


def ans(): 

    return a 

ans() 
+3

Eine Frage zu einem Zeitpunkt. Dump alle Ihre Fragen in einer Frage ergibt schlechte Lesbarkeit. Verbessere es. Lies [ask] und erstelle ein [mcve]. – MYGz

Antwort

0

Bitte stellen Sie Ihre Frage eins nach dem anderen. Ich habe jedoch eine Lösung für einige der oben gestellten Fragen gefunden. Sie können die Excel-Datei mit ex = pd.ExcelFile('Yourfilename.xls') laden und dann Ihren Blattnamen in der Excel-Datei mit ex.sheet_name überprüfen. nächste können Sie das das Blatt lesen folgende verwenden Sie in Ihrer Excel-Datei haben,

en = ex.parse('sheetname', skiprows = 2, skip_footer =True,..) 

dann können Sie die Sonderzeichen mit folgenden Syntax

en.replace('$%^',np.NaN, inplace =True) 

jetzt ersetzen Sie Ihren Datenrahmen der überprüfen Header und sehen und dann überprüfen, wie viele Zeilen Sie noch überspringen müssen und andere Details.

Spalten fallen zu lassen, können Sie die folgende Syntax aus der großen Frage verwenden

en.drop([dol for col in ['colname1', 'colname2', ...] if col in en], axis =1, inplace =True) 

Dieses es jetzt ist. Arbeite daran, und wenn dies das tut, was du willst, mache make als Antwort auf die Teile, die Excel-Datei lesen, Zeilen überspringen, NaN ersetzen und Spalten überspringen.

-1
def answer_one(): 
    import pandas as pd 
    energy=pd.read_excel('Energy Indicators.xls', skiprows=2) 
    energy.columns=['a','b','Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable'] 
    del energy['a'] 
    del energy['b'] 
    energy['Energy Supply']*=1000000 
    energy['Country'] = energy['Country'].str.replace(r"\(.*\)","") 
    energy['Country'] = energy['Country'].str.replace("[0-9()]+$", "") 
    energy.replace('Republic of Korea','South Korea', inplace = True) 
    energy.replace('United States of America','United States', inplace = True) 
    energy.replace('United Kingdom of Great Britain and Northern Ireland','United Kingdom', inplace = True) 
    energy.replace('China, Hong Kong Special Administrative Region','Hong Kong', inplace = True) 
    GDP=pd.read_csv('world_bank.csv',skiprows=4) 
    GDP.replace('Korea, Rep.','South Korea') 
    GDP.replace('Iran, Islamic Rep.','Iran') 
    GDP.replace('Hong Kong SAR, China' , 'Hong Kong') 
    ScimEn=pd.read_excel('scimagojr-3.xlsx') 
    GDP.columns=['Country', 'Country Code', 'Indicator Name', 'Indicator Code', 
     '1960', '1961', '1962', '1963', '1964', '1965', '1966', '1967', '1968', 
     '1969', '1970', '1971', '1972', '1973', '1974', '1975', '1976', '1977', 
     '1978', '1979', '1980', '1981', '1982', '1983', '1984', '1985', '1986', 
     '1987', '1988', '1989', '1990', '1991', '1992', '1993', '1994', '1995', 
     '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003', '2004', 
     '2005', '2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', 
     '2014', '2015'] 
    for i in ['1960', '1961', '1962', '1963', '1964', '1965', '1966', '1967', '1968', 
     '1969', '1970', '1971', '1972', '1973', '1974', '1975', '1976', '1977', 
     '1978', '1979', '1980', '1981', '1982', '1983', '1984', '1985', '1986', 
     '1987', '1988', '1989', '1990', '1991', '1992', '1993', '1994', '1995', 
     '1996', '1997', '1998', '1999', '2000', '2001', '2002', '2003', '2004', 
     '2005']: 
     del GDP[i] 
    ScimEn=ScimEn[ScimEn['Rank']<16] 
    x=pd.merge(GDP,ScimEn,how='inner',left_on='Country',right_on='Country') 
    y=pd.merge(x,energy,how='inner',left_on='Country',right_on='Country') 
    y=y.set_index('Country') 
    del y['Country Code'] 
    del y['Indicator Name'] 
    del y['Indicator Code'] 
    return y 

answer_one() 
0
import numpy as np 
import pandas as pd 


def energy(): 
    energy=pd.ExcelFile('Energy Indicators.xls').parse('Energy') 
    energy=energy.iloc[16:243][['Environmental Indicators: Energy','Unnamed: 3','Unnamed: 4','Unnamed: 5']].copy() 
    energy.columns=['Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable'] 

    energy = energy.replace('...', np.nan) 
    energy['Energy Supply']=energy['Energy Supply']*1000000 

    energy = energy.replace("Republic of Korea", "South Korea") 
    energy = energy.replace("United States of America", "United States") 
    energy = energy.replace("United Kingdom of Great Britain and Northern Ireland","United Kingdom") 
    energy = energy.replace("China, Hong Kong Special Administrative Region", "Hong Kong") 

    energy['Country'] = energy['Country'].str.extract('(^[a-zA-Z\s]+)', expand=False).str.strip() 

    energy=energy.reset_index() 
    energy=energy[['Country', 'Energy Supply', 'Energy Supply per Capita', '% Renewable']] 
    return energy.iloc[43] 

def GDP(): 
    GDP=pd.read_csv('world_bank.csv') 
    s=(GDP.iloc[3].values)[:4].astype(str).tolist()+(GDP.iloc[3].values)[4:].astype(int).astype(str).tolist() 
    GDP=GDP.iloc[4:] 
    GDP.columns=s 
    GDP=GDP[['Country Name','2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015']] 
    GDP.columns=['Country','2006', '2007', '2008', '2009', '2010', '2011', '2012', '2013', '2014', '2015'] 
    GDP=GDP.replace("Korea, Rep.", "South Korea",regex=False) 

    GDP=GDP.replace("Iran, Islamic Rep.","Iran") 

    GDP=GDP.replace("Hong Kong SAR, China","Hong Kong",regex=False) 
    return GDP 

def ScimEn(): 
    ScimEn=pd.ExcelFile('scimagojr-3.xlsx').parse('Sheet1') 

    return ScimEn 

def result(): 
    e= energy() 
    G=GDP() 
    S=ScimEn() 
    tdf=pd.merge(e,G,on='Country') 
    tdf=pd.merge(tdf,S,on='Country') 
    res=tdf[tdf['Rank']<16] 
    res=res.set_index('Country', inplace=False) 
    return res 
Verwandte Themen