በፓይዘን ውስጥ የመቧደን እና የመረጃ እይታን የመጠቀም ችሎታ ላይ በመስራት ላይ

በፓይዘን ውስጥ የመቧደን እና የመረጃ እይታን የመጠቀም ችሎታ ላይ በመስራት ላይ

ሃይ ሀብር!

ዛሬ በፓይዘን ውስጥ የመረጃ ማሰባሰብ እና የእይታ መሳሪያዎችን የመጠቀም ችሎታ ላይ እንሰራለን። በቀረበው ውስጥ በ Github ላይ የውሂብ ስብስብ በርካታ ባህሪያትን እንመርምር እና የእይታዎች ስብስብ እንገንባ።

በባህላዊ ፣ በመጀመሪያ ፣ ግቦቹን እንገልፃለን-

  • በጾታ እና በዓመት የቡድን መረጃ እና የሁለቱም ፆታዎች የልደት መጠን አጠቃላይ ተለዋዋጭ ሁኔታዎችን በዓይነ ሕሊናህ ተመልከት;
  • በታሪክ ውስጥ በጣም ተወዳጅ ስሞችን ያግኙ;
  • በመረጃው ውስጥ ያለውን አጠቃላይ ጊዜ በ 10 ክፍሎች ይከፋፍሉት እና ለእያንዳንዳቸው የእያንዳንዱን ጾታ በጣም ተወዳጅ ስም ያግኙ። ለእያንዳንዱ የተገኘ ስም በጊዜ ሂደት ተለዋዋጭነቱን በዓይነ ሕሊናህ ተመልከት;
  • ለእያንዳንዱ አመት ምን ያህል ስሞች በ 50% ሰዎች እንደሚሸፈኑ አስሉ እና በዓይነ ሕሊናዎ ይሳሉ (ለእያንዳንዱ አመት የተለያዩ ስሞችን እናያለን);
  • ከጠቅላላው የጊዜ ክፍተት 4 ዓመታትን ምረጥ እና ለእያንዳንዱ አመት ማሳያ በስም የመጀመሪያ ፊደል እና በስም የመጨረሻው ፊደል;
  • የበርካታ ታዋቂ ሰዎችን ዝርዝር (ፕሬዚዳንቶች, ዘፋኞች, ተዋናዮች, የፊልም ጀግኖች) እና በስም ተለዋዋጭነት ላይ ያላቸውን ተፅእኖ ይገምግሙ. ምስላዊነትን ይገንቡ።

ያነሱ ቃላት፣ ተጨማሪ ኮድ!

እና እንሂድ.

ውሂቡን በጾታ እና በዓመት እንመድበው እና አጠቃላይ የሁለቱም ፆታዎች የልደት መጠን ተለዋዋጭነት በዓይነ ሕሊናህ እንየው፡-

import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt

years = np.arange(1880, 2011, 3)
datalist = 'https://raw.githubusercontent.com/wesm/pydata-book/2nd-edition/datasets/babynames/yob{year}.txt'
dataframes = []
for year in years:
    dataset = datalist.format(year=year)
    dataframe = pd.read_csv(dataset, names=['name', 'sex', 'count'])
    dataframes.append(dataframe.assign(year=year))

result = pd.concat(dataframes)
sex = result.groupby('sex')
births_men = sex.get_group('M').groupby('year', as_index=False)
births_women = sex.get_group('F').groupby('year', as_index=False)
births_men_list = births_men.aggregate(np.sum)['count'].tolist()
births_women_list = births_women.aggregate(np.sum)['count'].tolist()

fig, ax = plt.subplots()
fig.set_size_inches(25,15)

index = np.arange(len(years))
stolb1 = ax.bar(index, births_men_list, 0.4, color='c', label='Мужчины')
stolb2 = ax.bar(index + 0.4, births_women_list, 0.4, alpha=0.8, color='r', label='Женщины')

ax.set_title('Рождаемость по полу и годам')
ax.set_xlabel('Года')
ax.set_ylabel('Рождаемость')
ax.set_xticklabels(years)
ax.set_xticks(index + 0.4)
ax.legend(loc=9)

fig.tight_layout()
plt.show()

በፓይዘን ውስጥ የመቧደን እና የመረጃ እይታን የመጠቀም ችሎታ ላይ በመስራት ላይ

በታሪክ ውስጥ በጣም የታወቁ ስሞችን እንፈልግ፡-

years = np.arange(1880, 2011)

dataframes = []
for year in years:
    dataset = datalist.format(year=year)
    dataframe = pd.read_csv(dataset, names=['name', 'sex', 'count'])
    dataframes.append(dataframe)

result = pd.concat(dataframes)
names = result.groupby('name', as_index=False).sum().sort_values('count', ascending=False)
names.head(10)

በፓይዘን ውስጥ የመቧደን እና የመረጃ እይታን የመጠቀም ችሎታ ላይ በመስራት ላይ

ሙሉውን የጊዜ ቆይታ በመረጃው ውስጥ በ10 ክፍሎች እንከፋፍለው እና ለእያንዳንዳቸው በጣም ተወዳጅ የሆነውን የእያንዳንዱን ጾታ ስም እናገኛለን። ለእያንዳንዱ የተገኘ ስም፣ ተለዋዋጭነቱን በሙሉ ጊዜ እናየዋለን፡

years = np.arange(1880, 2011)
part_size = int((years[years.size - 1] - years[0]) / 10) + 1
parts = {}
def GetPart(year):
    return int((year - years[0]) / part_size)
for year in years:
    index = GetPart(year)
    r = years[0] + part_size * index, min(years[years.size - 1], years[0] + part_size * (index + 1))
    parts[index] = str(r[0]) + '-' + str(r[1])

dataframe_parts = []
dataframes = []
for year in years:
    dataset = datalist.format(year=year)
    dataframe = pd.read_csv(dataset, names=['name', 'sex', 'count'])
    dataframe_parts.append(dataframe.assign(years=parts[GetPart(year)]))
    dataframes.append(dataframe.assign(year=year))
    
result_parts = pd.concat(dataframe_parts)
result = pd.concat(dataframes)

result_parts_sums = result_parts.groupby(['years', 'sex', 'name'], as_index=False).sum()
result_parts_names = result_parts_sums.iloc[result_parts_sums.groupby(['years', 'sex'], as_index=False).apply(lambda x: x['count'].idxmax())]
result_sums = result.groupby(['year', 'sex', 'name'], as_index=False).sum()

for groupName, groupLabels in result_parts_names.groupby(['name', 'sex']).groups.items():
    group = result_sums.groupby(['name', 'sex']).get_group(groupName)
    fig, ax = plt.subplots(1, 1, figsize=(18,10))

    ax.set_xlabel('Года')
    ax.set_ylabel('Рождаемость')
    label = group['name']
    ax.plot(group['year'], group['count'], label=label.aggregate(np.max), color='b', ls='-')
    ax.legend(loc=9, fontsize=11)

    plt.show()

በፓይዘን ውስጥ የመቧደን እና የመረጃ እይታን የመጠቀም ችሎታ ላይ በመስራት ላይ

በፓይዘን ውስጥ የመቧደን እና የመረጃ እይታን የመጠቀም ችሎታ ላይ በመስራት ላይ

በፓይዘን ውስጥ የመቧደን እና የመረጃ እይታን የመጠቀም ችሎታ ላይ በመስራት ላይ

በፓይዘን ውስጥ የመቧደን እና የመረጃ እይታን የመጠቀም ችሎታ ላይ በመስራት ላይ

በፓይዘን ውስጥ የመቧደን እና የመረጃ እይታን የመጠቀም ችሎታ ላይ በመስራት ላይ

በፓይዘን ውስጥ የመቧደን እና የመረጃ እይታን የመጠቀም ችሎታ ላይ በመስራት ላይ

በፓይዘን ውስጥ የመቧደን እና የመረጃ እይታን የመጠቀም ችሎታ ላይ በመስራት ላይ

በፓይዘን ውስጥ የመቧደን እና የመረጃ እይታን የመጠቀም ችሎታ ላይ በመስራት ላይ

በፓይዘን ውስጥ የመቧደን እና የመረጃ እይታን የመጠቀም ችሎታ ላይ በመስራት ላይ

በፓይዘን ውስጥ የመቧደን እና የመረጃ እይታን የመጠቀም ችሎታ ላይ በመስራት ላይ

ለእያንዳንዱ አመት ምን ያህል ስሞች በ 50% ሰዎች እንደሚሸፈኑ እናሰላለን እና ይህን ውሂብ በዓይነ ሕሊና እናሳያለን፡

dataframe = pd.DataFrame({'year': [], 'count': []})
years = np.arange(1880, 2011)
for year in years:
    dataset = datalist.format(year=year)
    csv = pd.read_csv(dataset, names=['name', 'sex', 'count'])
    names = csv.groupby('name', as_index=False).aggregate(np.sum)
    names['sum'] = names.sum()['count']
    names['percent'] = names['count'] / names['sum'] * 100
    names = names.sort_values(['percent'], ascending=False)
    names['cum_perc'] = names['percent'].cumsum()
    names_filtered = names[names['cum_perc'] <= 50]
    dataframe = dataframe.append(pd.DataFrame({'year': [year], 'count': [names_filtered.shape[0]]}))

fig, ax1 = plt.subplots(1, 1, figsize=(22,13))
ax1.set_xlabel('Года', fontsize = 12)
ax1.set_ylabel('Разнообразие имен', fontsize = 12)
ax1.plot(dataframe['year'], dataframe['count'], color='r', ls='-')
ax1.legend(loc=9, fontsize=12)

plt.show()

በፓይዘን ውስጥ የመቧደን እና የመረጃ እይታን የመጠቀም ችሎታ ላይ በመስራት ላይ

ከጠቅላላው የጊዜ ክፍተት ውስጥ 4 ዓመታትን እንመርጥ እና ለእያንዳንዱ አመት ስርጭቱን በስም እና በመጨረሻው ፊደል እናሳይ ።

from string import ascii_lowercase, ascii_uppercase

fig_first, ax_first = plt.subplots(1, 1, figsize=(14,10))
fig_last, ax_last = plt.subplots(1, 1, figsize=(14,10))

index = np.arange(len(ascii_uppercase))
years = [1944, 1978, 1991, 2003]
colors = ['r', 'g', 'b', 'y']
n = 0
for year in years:
    dataset = datalist.format(year=year)
    csv = pd.read_csv(dataset, names=['name', 'sex', 'count'])
    names = csv.groupby('name', as_index=False).aggregate(np.sum)
    count = names.shape[0]

    dataframe = pd.DataFrame({'letter': [], 'frequency_first': [], 'frequency_last': []})
    for letter in ascii_uppercase:
        countFirst = (names[names.name.str.startswith(letter)].count()['count'])
        countLast = (names[names.name.str.endswith(letter.lower())].count()['count'])

        dataframe = dataframe.append(pd.DataFrame({
            'letter': [letter],
            'frequency_first': [countFirst / count * 100],
            'frequency_last': [countLast / count * 100]}))

    ax_first.bar(index + 0.3 * n, dataframe['frequency_first'], 0.3, alpha=0.5, color=colors[n], label=year)
    ax_last.bar(index + bar_width * n, dataframe['frequency_last'], 0.3, alpha=0.5, color=colors[n], label=year)
    n += 1

ax_first.set_xlabel('Буква алфавита')
ax_first.set_ylabel('Частота, %')
ax_first.set_title('Первая буква в имени')
ax_first.set_xticks(index)
ax_first.set_xticklabels(ascii_uppercase)
ax_first.legend()

ax_last.set_xlabel('Буква алфавита')
ax_last.set_ylabel('Частота, %')
ax_last.set_title('Последняя буква в имени')
ax_last.set_xticks(index)
ax_last.set_xticklabels(ascii_uppercase)
ax_last.legend()

fig_first.tight_layout()
fig_last.tight_layout()

plt.show()

በፓይዘን ውስጥ የመቧደን እና የመረጃ እይታን የመጠቀም ችሎታ ላይ በመስራት ላይ

በፓይዘን ውስጥ የመቧደን እና የመረጃ እይታን የመጠቀም ችሎታ ላይ በመስራት ላይ

የበርካታ ታዋቂ ሰዎችን ዝርዝር (ፕሬዚዳንቶች፣ ዘፋኞች፣ ተዋናዮች፣ የፊልም ጀግኖች) እንዘርዝር እና በስም ተለዋዋጭነት ላይ ያላቸውን ተጽዕኖ እንገምግም።

celebrities = {'Frank': 'M', 'Britney': 'F', 'Madonna': 'F', 'Bob': 'M'}
dataframes = []
for year in years:
    dataset = datalist.format(year=year)
    dataframe = pd.read_csv(dataset, names=['name', 'sex', 'count'])
    dataframes.append(dataframe.assign(year=year))

result = pd.concat(dataframes)

for celebrity, sex in celebrities.items():
    names = result[result.name == celebrity]
    dataframe = names[names.sex == sex]
    fig, ax = plt.subplots(1, 1, figsize=(16,8))

    ax.set_xlabel('Года', fontsize = 10)
    ax.set_ylabel('Рождаемость', fontsize = 10)
    ax.plot(dataframe['year'], dataframe['count'], label=celebrity, color='r', ls='-')
    ax.legend(loc=9, fontsize=12)
        
    plt.show()

በፓይዘን ውስጥ የመቧደን እና የመረጃ እይታን የመጠቀም ችሎታ ላይ በመስራት ላይ

በፓይዘን ውስጥ የመቧደን እና የመረጃ እይታን የመጠቀም ችሎታ ላይ በመስራት ላይ

በፓይዘን ውስጥ የመቧደን እና የመረጃ እይታን የመጠቀም ችሎታ ላይ በመስራት ላይ

በፓይዘን ውስጥ የመቧደን እና የመረጃ እይታን የመጠቀም ችሎታ ላይ በመስራት ላይ

ለተግባር፣ በስም ተለዋዋጭነት ላይ ያላቸውን ተፅእኖ በምስል ለመገምገም ከመጨረሻው ምሳሌ ላይ የታዋቂውን ሰው ህይወት ወደ ምስላዊ እይታ ማከል ይችላሉ።

በዚህ ላይ ሁሉም ግቦቻችን ተሳክተዋል እና ተሟልተዋል. በፓይዘን ውስጥ የመረጃ ማሰባሰብ እና ምስላዊ መሳሪያዎችን አጠቃቀም ተክተናል እና ከመረጃ ጋር የበለጠ እንሰራለን። ሁሉም ሰው ዝግጁ በሆነ ፣ በሚታየው መረጃ ላይ ድምዳሜ ላይ መድረስ ይችላል።

ሁሉም እውቀት!

ምንጭ: hab.com

አስተያየት ያክሉ