我对以下代码中的状态声明感到困惑:
这运行得很好,但是在状态声明中,语句顺序如何正确?似乎在声明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:]