这个问题背后的一般用例是从目标目录中读取多个 CSV 日志文件到一个 Python Pandas 数据帧中,以便进行快速的统计分析和图表制作。使用 Pandas 而非 MySQL 的想法是为了在全天定期进行数据导入或附加 + 统计分析。
下面的脚本尝试将所有 CSV(相同的文件布局)文件读入单个 Pandas 数据框,并为每个读取的文件添加一个年份列。
脚本的问题是它现在只读取目录中的最后一个文件,而不是所需的结果是目标目录中的所有文件。
# Assemble all of the data files into a single DataFrame & add a year field
# 2010 is the last available year
years = range(1880, 2011)
for year in years:
path ='C:\\Documents and Settings\\Foo\\My Documents\\pydata-book\\pydata-book-master`\\ch02\\names\\yob%d.txt' % year
frame = pd.read_csv(path, names=columns)
frame['year'] = year
pieces.append(frame)
# Concatenates everything into a single Dataframe
names = pd.concat(pieces, ignore_index=True)
# Expected row total should be 1690784
names
<class 'pandas.core.frame.DataFrame'>
Int64Index: 33838 entries, 0 to 33837
Data columns:
name 33838 non-null values
sex 33838 non-null values
births 33838 non-null values
year 33838 non-null values
dtypes: int64(2), object(2)
# Start aggregating the data at the year & gender level using groupby or pivot
total_births = names.pivot_table('births', rows='year', cols='sex', aggfunc=sum)
# Prints pivot table
total_births.tail()
Out[35]:
sex F M
year
2010 1759010 1898382
pieces
是什么类型的对象?它是列表还是数据框? - Greg Reda