Coin Bureau, led by Guy, entered the YouTube universe in 2019 and has been a leading source of news relating to the cryptoverse. It is one of the best cryptocurrency YouTube channels that provides its viewers with relevant information about crypto, price predictions, fundamentals about cryptocurrency analysis, and upcoming coins
At 1.45 million YouTube subscribers, BitBoy Crypto is one of the best crypto YouTubers who features investment tips for those who want to take a risk in cryptocurrencies. Ben Armstrong is the head of the channel, and he uploads videos multiple times a week. He provides a conversational style to his videos to get his viewers feeling of presence and engagement.
Austin and Aaron Arnold are the masterminds behind Altcoin Daily, which has over 1.29 million YouTube subscribers. They launched their one of the best crypto YouTube channels in 2018 after they began to invest in the early digital coin market.
Brian Jung has over 1.25 million YouTube subscribers and has been posting videos since the end of 2018. He is a serial entrepreneur from Washington, D.C., with great experience in investments. He uploads the best educational videos about crypto news, credit and debit cards, and how to assess personal finance.
Benjamin Cowen, with YouTube 784K subscribers, has an advanced perspective on the best technical analysis of the cryptocurrency. He has a doctorate in engineering and is a source of knowledge for anything related to computational mathematics and programming.
# lets import libraries
from googleapiclient.discovery import build
import pandas as pd
import seaborn as sn
# Function to get channel statistics
api_key = 'AIzaSyB24Kop04L1GlTgRCm1XtQ4KB2a4gaBOwA'
Coin_Bureau_channel_id = ['UCqK_GSMbpiV8spgD3ZGloSw' # Coin Bureau
]
youtube = build('youtube','v3',developerKey = api_key)
from googleapiclient.errors import HttpError
def get_channel_stats(youtube, Coin_Bureau_channel_id):
all_data = []
try:
request = youtube.channels().list(
part='snippet,contentDetails,statistics',
id=','.join(Coin_Bureau_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,Coin_Bureau_channel_id)
[{'Channel_name': 'Coin Bureau', 'Subscribers': '2400000', 'Views': '230280246', 'Total_videos': '1128'}]
channel_statistics = get_channel_stats(youtube, Coin_Bureau_channel_id)
Coin_Bureau_channel_data =pd.DataFrame(channel_statistics)
Coin_Bureau_channel_data
Channel_name | Subscribers | Views | Total_videos | |
---|---|---|---|---|
0 | Coin Bureau | 2400000 | 230280246 | 1128 |
# Function to get channel statistics
api_key = 'AIzaSyB24Kop04L1GlTgRCm1XtQ4KB2a4gaBOwA'
BitBoy_Crypto_channel_id = ['UCuV9EB4I9L-xmRoaXd8tmuA' # BitBoy Crypto
]
youtube = build('youtube','v3',developerKey = api_key)
from googleapiclient.errors import HttpError
def get_channel_stats(youtube, BitBoy_Crypto_channel_id):
all_data = []
try:
request = youtube.channels().list(
part='snippet,contentDetails,statistics',
id=','.join(BitBoy_Crypto_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,BitBoy_Crypto_channel_id)
[{'Channel_name': 'Ben Armstrong', 'Subscribers': '92400', 'Views': '7724692', 'Total_videos': '396'}]
channel_statistics = get_channel_stats(youtube, BitBoy_Crypto_channel_id)
BitBoy_Crypto_channel_data =pd.DataFrame(channel_statistics)
BitBoy_Crypto_channel_data
Channel_name | Subscribers | Views | Total_videos | |
---|---|---|---|---|
0 | Ben Armstrong | 92400 | 7724692 | 396 |
# Function to get channel statistics
api_key = 'AIzaSyB24Kop04L1GlTgRCm1XtQ4KB2a4gaBOwA'
Altcoin_Daily_channel_id = ['UCbLhGKVY-bJPcawebgtNfbw' # Altcoin Daily
]
youtube = build('youtube','v3',developerKey = api_key)
from googleapiclient.errors import HttpError
def get_channel_stats(youtube, Altcoin_Daily_channel_id):
all_data = []
try:
request = youtube.channels().list(
part='snippet,contentDetails,statistics',
id=','.join(Altcoin_Daily_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,Altcoin_Daily_channel_id)
[{'Channel_name': 'Altcoin Daily', 'Subscribers': '1390000', 'Views': '206365467', 'Total_videos': '2566'}]
channel_statistics = get_channel_stats(youtube, Altcoin_Daily_channel_id)
Altcoin_Daily_channel_data =pd.DataFrame(channel_statistics)
Altcoin_Daily_channel_data
Channel_name | Subscribers | Views | Total_videos | |
---|---|---|---|---|
0 | Altcoin Daily | 1390000 | 206365467 | 2566 |
# Function to get channel statistics
api_key = 'AIzaSyB24Kop04L1GlTgRCm1XtQ4KB2a4gaBOwA'
Brian_Jung_channel_id = ['UCQglaVhGOBI0BR5S6IJnQPg' # Brian Jung
]
youtube = build('youtube','v3',developerKey = api_key)
from googleapiclient.errors import HttpError
def get_channel_stats(youtube, Brian_Jung_channel_id):
all_data = []
try:
request = youtube.channels().list(
part='snippet,contentDetails,statistics',
id=','.join(Brian_Jung_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,Brian_Jung_channel_id)
[{'Channel_name': 'Brian Jung', 'Subscribers': '1540000', 'Views': '77130591', 'Total_videos': '542'}]
channel_statistics = get_channel_stats(youtube, Brian_Jung_channel_id)
Brian_Jung_channel_data =pd.DataFrame(channel_statistics)
Brian_Jung_channel_data
Channel_name | Subscribers | Views | Total_videos | |
---|---|---|---|---|
0 | Brian Jung | 1540000 | 77130591 | 542 |
# Function to get channel statistics
api_key = 'AIzaSyB24Kop04L1GlTgRCm1XtQ4KB2a4gaBOwA'
Benjamin_Cowen_channel_id = ['UCRvqjQPSeaWn-uEx-w0XOIg' # Benjamin Cowen
]
youtube = build('youtube','v3',developerKey = api_key)
from googleapiclient.errors import HttpError
def get_channel_stats(youtube, Benjamin_Cowen_channel_id):
all_data = []
try:
request = youtube.channels().list(
part='snippet,contentDetails,statistics',
id=','.join(Benjamin_Cowen_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,Benjamin_Cowen_channel_id)
[{'Channel_name': 'Benjamin Cowen', 'Subscribers': '789000', 'Views': '109022574', 'Total_videos': '2154'}]
channel_statistics = get_channel_stats(youtube, Benjamin_Cowen_channel_id)
Benjamin_Cowen_channel_data =pd.DataFrame(channel_statistics)
Benjamin_Cowen_channel_data
Channel_name | Subscribers | Views | Total_videos | |
---|---|---|---|---|
0 | Benjamin Cowen | 789000 | 109022574 | 2154 |
# Lets combine the data frames
# Combine DataFrames using concat
combined_crypto_channels_df = pd.concat([Coin_Bureau_channel_data ,
BitBoy_Crypto_channel_data ,
Altcoin_Daily_channel_data ,
Brian_Jung_channel_data ,
Benjamin_Cowen_channel_data,
], ignore_index=True)
# Display the result
print(combined_crypto_channels_df)
Channel_name Subscribers Views Total_videos 0 Coin Bureau 2400000 230280246 1128 1 Ben Armstrong 92400 7724692 396 2 Altcoin Daily 1390000 206365467 2566 3 Brian Jung 1540000 77130591 542 4 Benjamin Cowen 789000 109022574 2154
# have a look at the datatypes
combined_crypto_channels_df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 5 entries, 0 to 4 Data columns (total 4 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Channel_name 5 non-null object 1 Subscribers 5 non-null object 2 Views 5 non-null object 3 Total_videos 5 non-null object dtypes: object(4) memory usage: 292.0+ bytes
# lets change the datatypes to perform visualisations
combined_crypto_channels_df['Subscribers'] = pd.to_numeric(combined_crypto_channels_df['Subscribers'])
combined_crypto_channels_df['Views'] = pd.to_numeric(combined_crypto_channels_df['Views'])
combined_crypto_channels_df['Total_videos'] = pd.to_numeric(combined_crypto_channels_df['Total_videos'])
# letsconirm if the datatypes has changed
combined_crypto_channels_df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 5 entries, 0 to 4 Data columns (total 4 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Channel_name 5 non-null object 1 Subscribers 5 non-null int64 2 Views 5 non-null int64 3 Total_videos 5 non-null int64 dtypes: int64(3), object(1) memory usage: 292.0+ bytes
combined_crypto_channels_df
Channel_name | Subscribers | Views | Total_videos | |
---|---|---|---|---|
0 | Coin Bureau | 2400000 | 230280246 | 1128 |
1 | Ben Armstrong | 92400 | 7724692 | 396 |
2 | Altcoin Daily | 1390000 | 206365467 | 2566 |
3 | Brian Jung | 1540000 | 77130591 | 542 |
4 | Benjamin Cowen | 789000 | 109022574 | 2154 |
import pandas as pd
import matplotlib.pyplot as plt
# Sort the DataFrame by 'Subscribers' in descending order
combined_crypto_channels_df_subscribers_sorted = combined_crypto_channels_df.sort_values(by='Subscribers', ascending=False)
# Shorten channel names
combined_crypto_channels_df_subscribers_sorted['Channel_name'] = combined_crypto_channels_df_subscribers_sorted['Channel_name'].apply(lambda x: x[:15])
# Plotting Subscribers in descending order
fig, axes = plt.subplots(nrows=3, ncols=1, figsize=(10, 15))
axes[0].bar(combined_crypto_channels_df_subscribers_sorted['Channel_name'], combined_crypto_channels_df_subscribers_sorted['Subscribers'], color='blue')
axes[0].set_title('Subscribers')
# Sort the DataFrame by 'Views' in descending order
combined_crypto_channels_df_views_sorted = combined_crypto_channels_df.sort_values(by='Views', ascending=False)
# Shorten channel names
combined_crypto_channels_df_views_sorted['Channel_name'] = combined_crypto_channels_df_views_sorted['Channel_name'].apply(lambda x: x[:15])
# Plotting Views in descending order
axes[1].bar(combined_crypto_channels_df_views_sorted['Channel_name'],combined_crypto_channels_df_views_sorted['Views'], color='brown')
axes[1].set_title('Views')
# Sort the DataFrame by 'Total_videos' in descending order
combined_crypto_channels_df_total_videos_sorted =combined_crypto_channels_df.sort_values(by='Total_videos', ascending=False)
# Shorten channel names
combined_crypto_channels_df_total_videos_sorted['Channel_name'] = combined_crypto_channels_df_total_videos_sorted['Channel_name'].apply(lambda x: x[:15])
# Plotting Total Videos in descending order
axes[2].bar(combined_crypto_channels_df_total_videos_sorted['Channel_name'], combined_crypto_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()