所有交易所的科技公司 IPO(按年份)
listings 字典中的每家公司都有一个介于 1972 到 2017 之间的 IPO 年份。因此,在本题语境下,即使其 dtype 为 float64,也可以将各表的 'IPO Year' 列视为具有明确定义顺序的分类型变量。
接下来,您将合并来自三个交易所的数据,并绘制科技行业公司 IPO 年份的分布图。已为您导入 pandas 为 pd、matplotlib.pyplot 为 plt,且上一个练习得到的 listings 字典已在您的工作区中。
本练习是课程的一部分
在 Python 中导入与管理金融数据
练习说明
- 使用一个以
exchange为迭代变量的 for 循环,exchange包含每个交易所的名称。- 在每次迭代中,将
listings中以键exchange对应的 DataFrame 追加到all_listings。
- 在每次迭代中,将
- 循环结束后,使用
pd.concat()将all_listings中的三个 DataFrame 合并,并将结果赋给listing_data。 - 过滤
listing_data中行业为'Technology'的公司,并将结果赋给tech_companies。 - 将
tech_companies的'IPO Year'列赋给ipo years。 - 对该数据使用
.dropna()删除缺失值,并用.astype()转换为int。 - 对
ipo_years应用.value_counts(),将年份按升序排序,并创建标题为'Tech IPOs by Year'的条形图。 - 将
xticks旋转 45 度并显示结果。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Create lists
exchanges = ['amex', 'nasdaq', 'nyse']
all_listings = []
# Use for loop to create listing_data
for exchange in exchanges:
all_listings.____(____[____])
# Combine DataFrames
listing_data = pd.____(____)
# Select tech companies
tech_companies = listing_data[____.____ == 'Technology']
# Create ipo_years
ipo_years = ____[____]
# Drop missing values and convert to int
ipo_years = ipo_years.____().____(int)
# Count values, sort ascending by year, and create a bar plot
ipo_years.____().plot(kind=____, ____='Tech IPOs by Year')
# Rotate xticks and show result
plt.xticks(____=____)
# Show the plot
plt.show()