各交易所歷年科技業 IPO
listings 字典中的每家公司,其 IPO 年份介於 1972 到 2017 年之間。因此,在此情境下,即使該欄位的 dtype 為 float64,各工作表中的 「'IPO Year'」 欄也可視為具有明確順序的類別變數。
你將把三個交易所的資料合併,並繪出科技業公司 IPO 年份的分佈。已匯入 pandas(作為 pd)與 matplotlib.pyplot(作為 plt),且上一個練習中的 listings 字典已在你的工作區中。
本練習屬於課程
在 Python 中匯入與管理財務資料
練習說明
- 使用一個 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()