Я смущен объявлением состояний в следующем коде:
Это работает отлично, но в объявлении для состояний, как правильный порядок операторов? Кажется, вы звоните f, прежде чем объявить f.
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
data_url = 'https://www.ssa.gov/oact/babynames/state/namesbystate.zip'
namesbystate_path = fetch_and_cache(data_url, 'namesbystate.zip')
import zipfile
zf = zipfile.ZipFile(namesbystate_path, 'r')
column_labels = ['State', 'Sex', 'Year', 'Name', 'Count']
def load_dataframe_from_zip(zf, f):
with zf.open(f) as fh:
return pd.read_csv(fh, header=None, names=column_labels)
states = [
load_dataframe_from_zip(zf, f)
for f in sorted(zf.filelist, key=lambda x:x.filename)
if f.filename.endswith('.TXT')
]
baby_names = states[0]
for state_df in states[1:]:
baby_names = pd.concat([baby_names, state_df])
baby_names = baby_names.reset_index().iloc[:, 1:]