Heus Habr!
Hodie de arte instrumentorum utendi ad copulandas et ad visualising notitias in Pythone laboramus. In provisum
Iuxta traditionem, initio, fines definiamus:
- Societas data per sexum et annum et visualise altiorem dynamica quae nata sunt utriusque sexus;
- Celeberrima aevi nomina reperies;
- Totum tempus in notitiis in partes X divide et pro singulis, nomen populare cuiusque generis invenies. Nomen enim unumquodque inuenit suum dynamica super omne tempus.
- Pro quolibet anno, computa quot nomina %% hominum tegunt et visualise (varietatem nominum singulis annis videbimus);
- 4 annos ex toto intervallo et propono in singulis annis distributio per primam litteram in nomine et per ultimam litteram in nomine;
- Indicem plurium illustrium hominum (praesides, cantores, histriones, notas pelliculas) fac et vim suam in dynamicis nominum aestimare. Aedificare visualizationem.
Minus verba, plura codice!
Cogeremus notitias per sexum et annum et insitum altiore dynamica quae natae sunt utriusque sexus;
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()
Plurima nomina in historia inveniamus popularia:
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)
Totum tempus in notitiis in partes 10 dividamus et pro singulis inveniemus nomen popularissimum cuiusque generis. Nomen enim unumquodque invenitur, ejus dynamica vis in omni tempore.
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()
Pro quolibet anno computamus quot nomina %% hominum tegunt et hanc notitiam visualisam faciunt:
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 annos ex toto intervallo eligamus, et singulis annis per primam literam in nomine et literam ultimam in nomine distributionem ostendas;
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()
Indicem plurium nobilium hominum (praesides, cantores, histriones, notae pelliculae) faciamus et vim suam in dynamicis nominum aestimare;
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()
Ad institutionem, vitae celebritatis tempus ad visualizationem ab ultimo exemplo addere potes ut eorum influxum dynamicorum nominum clare perpendat.
Cum hoc, omnia nostra proposita consecuta sunt et adimpleta sunt. Artem instrumentorum utendi ad copulandi et visualisandi notitias in Pythone elaboravimus, et cum notitia operari perseveremus. Quisque concludere potest ex parata facta, data ipsis subjicitur.
Cognitio omnibus!
Source: www.habr.com