The following table lists the 100 largest bank holding companies in the United States ranked by total assets of June 30, 2023 per the Federal Financial Institutions Examination Council; their market capitalization
J.P. Morgan is a leader in financial services, offering solutions to clients in more than 100 countries with one of the most comprehensive global product platforms available. We have been helping our clients to do business and manage their wealth for more than 200 years. Our business has been built upon our core principle of putting our clients' interests first.
Bank of America provides people, companies and institutional investors the financial products and services they need to help achieve their financial goals at every stage of their lives. What would you like the power to do? For you and your family, your business and your community. At Bank of America, our purpose is to help make financial lives better through the power of every connection.
Citi's mission is to serve as a trusted partner to our clients by responsibly providing financial services that enable growth and economic progress. Our core activities are safeguarding assets, lending money, making payments and accessing the capital markets on behalf of our clients. We have 200 years of experience helping our clients meet the world's toughest challenges and embrace its greatest opportunities. We are Citi, the global bank – an institution connecting millions of people across hundreds of countries and cities.
Welcome to our official company YouTube channel. Here you will find a collection of videos that demonstrate our vision and values in action, ensuring you have access to expertise that will help you succeed financially. Wells Fargo provides personal banking, investing, mortgage, and commercial finance through approximately 4,300 branches and more than 11,000 ATMs across our footprint, and internationally through WellsFargo.com. News, insights and perspectives from Wells Fargo are also available at stories.wf.com.
The Goldman Sachs Group, Inc. is a leading global investment banking, securities and investment management firm that provides a wide range of financial services to a substantial and diversified client base that includes corporations, financial institutions, governments and individuals. Founded in 1869, the firm is headquartered in New York and maintains offices in all major financial centers around the world.
Morgan Stanley mobilizes capital to help governments, corporations, institutions and individuals around the world achieve their financial goals. For over 85 years, the firm's reputation for using innovative thinking to solve complex problems has been well earned and rarely matched. A consistent industry leader throughout decades of dramatic change in modern finance, Morgan Stanley will continue to break new ground in advising, serving and providing new opportunities for its clients.
# lets import libraries
from googleapiclient.discovery import build
import pandas as pd
import seaborn as sn
# Function to get channel statistics
api_key = 'AIzaSyB24Kop04L1GlTgRCm1XtQ4KB2a4gaBOwA'
JPMorgan_Chasen_channel_id = ['UCBnFes2U2diA3QfR5m8l_Tw' # JPMorgan Chase
]
youtube = build('youtube','v3',developerKey = api_key)
from googleapiclient.errors import HttpError
def get_channel_stats(youtube, JPMorgan_Chasen_channel_id):
all_data = []
try:
request = youtube.channels().list(
part='snippet,contentDetails,statistics',
id=','.join(JPMorgan_Chasen_channel_id)
)
response = request.execute()
for item in response.get('items', []):
snippet = item.get('snippet', {})
statistics = item.get('statistics', {})
data = {
'Channel_name': snippet.get('title', ''),
'Subscribers': statistics.get('subscriberCount', ''),
'Views': statistics.get('viewCount', ''),
'Total_videos': statistics.get('videoCount', '')
}
all_data.append(data)
except HttpError as e:
print(f"HTTP error occurred: {e}")
print(f"Request URL: {e.resp.request.url}")
print(f"Request body: {e.resp.request.body}")
return all_data
get_channel_stats(youtube,JPMorgan_Chasen_channel_id)
[{'Channel_name': 'jpmorgan', 'Subscribers': '102000', 'Views': '41923258', 'Total_videos': '970'}]
channel_statistics = get_channel_stats(youtube, JPMorgan_Chasen_channel_id)
JPMorgan_Chasen_channel_data =pd.DataFrame(channel_statistics)
JPMorgan_Chasen_channel_data
Channel_name | Subscribers | Views | Total_videos | |
---|---|---|---|---|
0 | jpmorgan | 102000 | 41923258 | 970 |
# Function to get channel statistics
api_key = 'AIzaSyB24Kop04L1GlTgRCm1XtQ4KB2a4gaBOwA'
Bank_of_America_channel_id = ['UCtHZ1qs5h4sx9TijVBQCMIA' # Bank of America
]
youtube = build('youtube','v3',developerKey = api_key)
from googleapiclient.errors import HttpError
def get_channel_stats(youtube, Bank_of_America_channel_id):
all_data = []
try:
request = youtube.channels().list(
part='snippet,contentDetails,statistics',
id=','.join(Bank_of_America_channel_id)
)
response = request.execute()
for item in response.get('items', []):
snippet = item.get('snippet', {})
statistics = item.get('statistics', {})
data = {
'Channel_name': snippet.get('title', ''),
'Subscribers': statistics.get('subscriberCount', ''),
'Views': statistics.get('viewCount', ''),
'Total_videos': statistics.get('videoCount', '')
}
all_data.append(data)
except HttpError as e:
print(f"HTTP error occurred: {e}")
print(f"Request URL: {e.resp.request.url}")
print(f"Request body: {e.resp.request.body}")
return all_data
get_channel_stats(youtube,Bank_of_America_channel_id)
[{'Channel_name': 'Bank of America', 'Subscribers': '116000', 'Views': '8650126', 'Total_videos': '262'}]
channel_statistics = get_channel_stats(youtube, Bank_of_America_channel_id)
Bank_of_America_channel_data =pd.DataFrame(channel_statistics)
Bank_of_America_channel_data
Channel_name | Subscribers | Views | Total_videos | |
---|---|---|---|---|
0 | Bank of America | 116000 | 8650126 | 262 |
# Function to get channel statistics
api_key = 'AIzaSyB24Kop04L1GlTgRCm1XtQ4KB2a4gaBOwA'
Citigroup_channel_id = ['UCrJYCCvJzI_eEn9HpaJRZOg' # Citigroup
]
youtube = build('youtube','v3',developerKey = api_key)
from googleapiclient.errors import HttpError
def get_channel_stats(youtube, Citigroup_channel_id):
all_data = []
try:
request = youtube.channels().list(
part='snippet,contentDetails,statistics',
id=','.join(Citigroup_channel_id)
)
response = request.execute()
for item in response.get('items', []):
snippet = item.get('snippet', {})
statistics = item.get('statistics', {})
data = {
'Channel_name': snippet.get('title', ''),
'Subscribers': statistics.get('subscriberCount', ''),
'Views': statistics.get('viewCount', ''),
'Total_videos': statistics.get('videoCount', '')
}
all_data.append(data)
except HttpError as e:
print(f"HTTP error occurred: {e}")
print(f"Request URL: {e.resp.request.url}")
print(f"Request body: {e.resp.request.body}")
return all_data
get_channel_stats(youtube,Citigroup_channel_id)
[{'Channel_name': 'Citi', 'Subscribers': '88700', 'Views': '158856797', 'Total_videos': '1452'}]
channel_statistics = get_channel_stats(youtube, Citigroup_channel_id)
Citigroup_channel_data =pd.DataFrame(channel_statistics)
Citigroup_channel_data
Channel_name | Subscribers | Views | Total_videos | |
---|---|---|---|---|
0 | Citi | 88700 | 158856797 | 1452 |
# Function to get channel statistics
api_key = 'AIzaSyB24Kop04L1GlTgRCm1XtQ4KB2a4gaBOwA'
Wells_Fargo_channel_id = ['UCGcBOP3IhbgHOPBcUFUZRdQ' # Wells Fargo
]
youtube = build('youtube','v3',developerKey = api_key)
from googleapiclient.errors import HttpError
def get_channel_stats(youtube, Wells_Fargo_channel_id):
all_data = []
try:
request = youtube.channels().list(
part='snippet,contentDetails,statistics',
id=','.join(Wells_Fargo_channel_id)
)
response = request.execute()
for item in response.get('items', []):
snippet = item.get('snippet', {})
statistics = item.get('statistics', {})
data = {
'Channel_name': snippet.get('title', ''),
'Subscribers': statistics.get('subscriberCount', ''),
'Views': statistics.get('viewCount', ''),
'Total_videos': statistics.get('videoCount', '')
}
all_data.append(data)
except HttpError as e:
print(f"HTTP error occurred: {e}")
print(f"Request URL: {e.resp.request.url}")
print(f"Request body: {e.resp.request.body}")
return all_data
get_channel_stats(youtube,Wells_Fargo_channel_id)
[{'Channel_name': 'Wells Fargo', 'Subscribers': '330000', 'Views': '174822925', 'Total_videos': '379'}]
channel_statistics = get_channel_stats(youtube, Wells_Fargo_channel_id)
Wells_Fargo_channel_data =pd.DataFrame(channel_statistics)
Wells_Fargo_channel_data
Channel_name | Subscribers | Views | Total_videos | |
---|---|---|---|---|
0 | Wells Fargo | 330000 | 174822925 | 379 |
# Function to get channel statistics
api_key = 'AIzaSyB24Kop04L1GlTgRCm1XtQ4KB2a4gaBOwA'
Goldman_Sachs_channel_id = ['UCyz6-taovlaOkPsPtK4KNEg' # Goldman Sachs
]
youtube = build('youtube','v3',developerKey = api_key)
from googleapiclient.errors import HttpError
def get_channel_stats(youtube, Goldman_Sachs_channel_id):
all_data = []
try:
request = youtube.channels().list(
part='snippet,contentDetails,statistics',
id=','.join(Goldman_Sachs_channel_id)
)
response = request.execute()
for item in response.get('items', []):
snippet = item.get('snippet', {})
statistics = item.get('statistics', {})
data = {
'Channel_name': snippet.get('title', ''),
'Subscribers': statistics.get('subscriberCount', ''),
'Views': statistics.get('viewCount', ''),
'Total_videos': statistics.get('videoCount', '')
}
all_data.append(data)
except HttpError as e:
print(f"HTTP error occurred: {e}")
print(f"Request URL: {e.resp.request.url}")
print(f"Request body: {e.resp.request.body}")
return all_data
get_channel_stats(youtube,Goldman_Sachs_channel_id)
[{'Channel_name': 'Goldman Sachs', 'Subscribers': '221000', 'Views': '196741519', 'Total_videos': '1791'}]
channel_statistics = get_channel_stats(youtube, Goldman_Sachs_channel_id)
Goldman_Sachs_channel_data =pd.DataFrame(channel_statistics)
Goldman_Sachs_channel_data
Channel_name | Subscribers | Views | Total_videos | |
---|---|---|---|---|
0 | Goldman Sachs | 221000 | 196741519 | 1791 |
# Function to get channel statistics
api_key = 'AIzaSyB24Kop04L1GlTgRCm1XtQ4KB2a4gaBOwA'
Morgan_Stanley_channel_id = ['UCz6RzD6KG_hH_oHb2kyW5jQ' # Morgan Stanley
]
youtube = build('youtube','v3',developerKey = api_key)
from googleapiclient.errors import HttpError
def get_channel_stats(youtube, Morgan_Stanley_channel_id):
all_data = []
try:
request = youtube.channels().list(
part='snippet,contentDetails,statistics',
id=','.join(Morgan_Stanley_channel_id)
)
response = request.execute()
for item in response.get('items', []):
snippet = item.get('snippet', {})
statistics = item.get('statistics', {})
data = {
'Channel_name': snippet.get('title', ''),
'Subscribers': statistics.get('subscriberCount', ''),
'Views': statistics.get('viewCount', ''),
'Total_videos': statistics.get('videoCount', '')
}
all_data.append(data)
except HttpError as e:
print(f"HTTP error occurred: {e}")
print(f"Request URL: {e.resp.request.url}")
print(f"Request body: {e.resp.request.body}")
return all_data
get_channel_stats(youtube,Morgan_Stanley_channel_id)
[{'Channel_name': 'Morgan Stanley', 'Subscribers': '44600', 'Views': '1691261', 'Total_videos': '907'}]
channel_statistics = get_channel_stats(youtube, Morgan_Stanley_channel_id)
Morgan_Stanley_channel_data =pd.DataFrame(channel_statistics)
Morgan_Stanley_channel_data
Channel_name | Subscribers | Views | Total_videos | |
---|---|---|---|---|
0 | Morgan Stanley | 44600 | 1691261 | 907 |
# Lets combine the data frames
# Combine DataFrames using concat
combined_banks_channels_df = pd.concat([JPMorgan_Chasen_channel_data ,
Bank_of_America_channel_data ,
Citigroup_channel_data ,
Wells_Fargo_channel_data ,
Goldman_Sachs_channel_data,
Morgan_Stanley_channel_data
], ignore_index=True)
# Display the result
print(combined_banks_channels_df)
Channel_name Subscribers Views Total_videos 0 jpmorgan 102000 41923258 970 1 Bank of America 116000 8650126 262 2 Citi 88700 158856797 1452 3 Wells Fargo 330000 174822925 379 4 Goldman Sachs 221000 196741519 1791 5 Morgan Stanley 44600 1691261 907
# # lets have a look at the datatypes
combined_banks_channels_df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 6 entries, 0 to 5 Data columns (total 4 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Channel_name 6 non-null object 1 Subscribers 6 non-null object 2 Views 6 non-null object 3 Total_videos 6 non-null object dtypes: object(4) memory usage: 324.0+ bytes
# lets change the datatypes to perform visualisations
combined_banks_channels_df['Subscribers'] = pd.to_numeric(combined_banks_channels_df['Subscribers'])
combined_banks_channels_df['Views'] = pd.to_numeric(combined_banks_channels_df['Views'])
combined_banks_channels_df['Total_videos'] = pd.to_numeric(combined_banks_channels_df['Total_videos'])
# letsconirm if the datatypes has changed
combined_banks_channels_df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 6 entries, 0 to 5 Data columns (total 4 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Channel_name 6 non-null object 1 Subscribers 6 non-null int64 2 Views 6 non-null int64 3 Total_videos 6 non-null int64 dtypes: int64(3), object(1) memory usage: 324.0+ bytes
combined_banks_channels_df
Channel_name | Subscribers | Views | Total_videos | |
---|---|---|---|---|
0 | jpmorgan | 102000 | 41923258 | 970 |
1 | Bank of America | 116000 | 8650126 | 262 |
2 | Citi | 88700 | 158856797 | 1452 |
3 | Wells Fargo | 330000 | 174822925 | 379 |
4 | Goldman Sachs | 221000 | 196741519 | 1791 |
5 | Morgan Stanley | 44600 | 1691261 | 907 |
import pandas as pd
import matplotlib.pyplot as plt
# Sort the DataFrame by 'Subscribers' in descending order
combined_banks_channels_df_subscribers_sorted = combined_banks_channels_df.sort_values(by='Subscribers', ascending=False)
# Shorten channel names
combined_banks_channels_df_subscribers_sorted['Channel_name'] = combined_banks_channels_df_subscribers_sorted['Channel_name'].apply(lambda x: x[:8])
# Plotting Subscribers in descending order
fig, axes = plt.subplots(nrows=3, ncols=1, figsize=(10, 15))
axes[0].bar(combined_banks_channels_df_subscribers_sorted['Channel_name'], combined_banks_channels_df_subscribers_sorted['Subscribers'], color='blue')
axes[0].set_title('Subscribers')
# Sort the DataFrame by 'Views' in descending order
combined_banks_channels_df_views_sorted = combined_banks_channels_df.sort_values(by='Views', ascending=False)
# Shorten channel names
combined_banks_channels_df_views_sorted['Channel_name'] = combined_banks_channels_df_views_sorted['Channel_name'].apply(lambda x: x[:8])
# Plotting Views in descending order
axes[1].bar(combined_banks_channels_df_views_sorted['Channel_name'],combined_banks_channels_df_views_sorted['Views'], color='brown')
axes[1].set_title('Views')
# Sort the DataFrame by 'Total_videos' in descending order
combined_banks_channels_df_total_videos_sorted =combined_banks_channels_df.sort_values(by='Total_videos', ascending=False)
# Shorten channel names
combined_banks_channels_df_total_videos_sorted['Channel_name'] = combined_banks_channels_df_total_videos_sorted['Channel_name'].apply(lambda x: x[:10])
# Plotting Total Videos in descending order
axes[2].bar(combined_banks_channels_df_total_videos_sorted['Channel_name'], combined_banks_channels_df_total_videos_sorted['Total_videos'], color='orange')
axes[2].set_title('Total Videos')
# Adjust layout for better visibility
plt.tight_layout()
# Show the plot
plt.show()