'Matplotlib and Pandas Plotting amount of numbers in certain range

I have pandas Dataframe that looks like this:

DataFrame

I am asking to create this kind of plot for every year [1...10] with the Score range of [1...10]. This means that for every year, the plot will present:

how many values between [0-1] have in year 1
how many values between [2-3] have in year 1
how many values between [4-5] have in year 1
.
.
.
.
.
how many values between [6-7] have in year 10
how many values between [8-9] have in year 10
how many values between [10] has in year 10

Plot Example

Need some help, Thank you!



Solution 1:[1]

The following code works perfectly:

def visualize_yearly_score_distribution(ds, year):

sns.set_theme(style="ticks")

first_range = 0
second_range = 0
third_range = 0
fourth_range = 0
fifth_range = 0
six_range = 0
seven_range = 0
eight_range = 0
nine_range = 0
last_range = 0
score_list = []

for index, row in ds.iterrows():
    if row['Publish Date'] == year:
        if 0 < row['Score'] < 1:
            first_range += 1
        if 1 < row['Score'] < 2:
            second_range += 1
        if 2 < row['Score'] < 3:
            third_range += 1
        if 3 < row['Score'] < 4:
            fourth_range += 1
        if 4 < row['Score'] < 5:
            fifth_range += 1
        if 5 < row['Score'] < 6:
            six_range += 1
        if 6 < row['Score'] < 7:
            seven_range += 1
        if 7 < row['Score'] < 8:
            eight_range += 1
        if 8 < row['Score'] < 9:
            nine_range += 1
        if 9 < row['Score'] < 10:
            last_range += 1
score_list.append(first_range)
score_list.append(second_range)
score_list.append(third_range)
score_list.append(fourth_range)
score_list.append(fifth_range)
score_list.append(six_range)
score_list.append(seven_range)
score_list.append(eight_range)
score_list.append(nine_range)
score_list.append(last_range)
range_list = ['0-1', '1-2', '2-3', '3-4', '4-5', '5-6', '6-7', '7-8', '8-9', '9-10']

plt.pie([x*100 for x in score_list], labels=[x for x in range_list], autopct='%0.1f', explode=None)
plt.title(f"Yearly Score Distribution for {str(year)}")
plt.tight_layout()
plt.legend()
plt.show()

Thank you all for the kind comments :) This case is closed.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 PyberGeek