import requests
import pandas as pd
import matplotlib.pyplot as plt
API_KEY = 'DH1HKPF1RYUDJICP'
top_10_companies = ['AAPL', 'MSFT', 'GOOGL', 'AMZN', 'BRK-B', 'JPM', 'JNJ', 'XOM', 'CVX', 'UNH']
def safe_float(value):
try:
return float(value)
except (TypeError, ValueError):
return 0.0
def get_company_data(symbol, api_key):
url = f"https://www.alphavantage.co/query?function=OVERVIEW&symbol={symbol}&apikey={api_key}"
response = requests.get(url)
return response.json()
data_list = []
for company in top_10_companies:
data = get_company_data(company, API_KEY)
data_list.append({
'Symbol': company,
'MarketCapitalization': safe_float(data.get('MarketCapitalization')),
'QuarterlyEarningsGrowthYOY': safe_float(data.get('QuarterlyEarningsGrowthYOY')),
'QuarterlyRevenueGrowthYOY': safe_float(data.get('QuarterlyRevenueGrowthYOY')),
'EBITDA': safe_float(data.get('EBITDA')),
'PERatio': safe_float(data.get('PERatio')),
'EPS': safe_float(data.get('EPS')),
'RevenuePerShareTTM': safe_float(data.get('RevenuePerShareTTM')),
'ProfitMargin': safe_float(data.get('ProfitMargin')),
'OperatingMarginTTM': safe_float(data.get('OperatingMarginTTM')),
'ReturnOnAssetsTTM': safe_float(data.get('ReturnOnAssetsTTM')),
'ReturnOnEquityTTM': safe_float(data.get('ReturnOnEquityTTM')),
'RevenueTTM': safe_float(data.get('RevenueTTM')),
'GrossProfitTTM': safe_float(data.get('GrossProfitTTM'))
})
df = pd.DataFrame(data_list)
metrics = ['MarketCapitalization', 'QuarterlyEarningsGrowthYOY', 'QuarterlyRevenueGrowthYOY',
'EBITDA', 'PERatio', 'EPS', 'RevenuePerShareTTM', 'ProfitMargin',
'OperatingMarginTTM', 'ReturnOnAssetsTTM', 'ReturnOnEquityTTM',
'RevenueTTM', 'GrossProfitTTM']
means = df[metrics].mean()
stds = df[metrics].std()
plt.figure(figsize=(10,6))
plt.bar(df['Symbol'], df['MarketCapitalization'], color='blue')
plt.title('Market Capitalization of Top 10 Companies')
plt.xlabel('Company')
plt.ylabel('Market Capitalization (in trillions)')
plt.xticks(rotation=45)
plt.show()
plt.figure(figsize=(10,6))
plt.bar(df['Symbol'], df['ProfitMargin'], color='green')
plt.title('Profit Margin of Top 10 Companies')
plt.xlabel('Company')
plt.ylabel('Profit Margin (%)')
plt.xticks(rotation=45)
plt.show()
plt.figure(figsize=(10,6))
plt.bar(df['Symbol'], df['QuarterlyEarningsGrowthYOY'], color='orange')
plt.title('Quarterly Earnings Growth YOY of Top 10 Companies')
plt.xlabel('Company')
plt.ylabel('Quarterly Earnings Growth YOY (%)')
plt.xticks(rotation=45)
plt.show()
summary_df = pd.DataFrame({
'Mean': means,
'Standard Deviation': stds
})
print("\nSummary Statistics:")
print(summary_df)
summary_metrics = ['PERatio', 'ReturnOnEquityTTM']
for metric in summary_metrics:
plt.figure(figsize=(10,6))
plt.bar(df['Symbol'], df[metric], color='purple')
plt.title(f'{metric} of Top 10 Companies')
plt.xlabel('Company')
plt.ylabel(metric)
plt.xticks(rotation=45)
plt.show()
Run to view results