Im 7. Beitrag des Adventskalenders werden wir den im 6. Beitrag veröffentlichten Datensatz (Datenbereinigungsinformationen, die aus den in XBRL beschriebenen Daten extrahiert wurden) programmgesteuert visualisieren.
(Das Programm in diesem Artikel wird ohne Gewähr bereitgestellt. XBRL Japan übernimmt unabhängig von der Ursache die Verantwortung für alle Nachteile oder Probleme, die durch die Verwendung dieses Programms entstehen können. Ich werde es nicht ertragen.)
Dieses Programm wird veröffentlicht in "Lassen Sie uns automatisch Mitarbeiterinformationen wie das Durchschnittsgehalt aus XBRL-Daten extrahieren, die von EDINET (Dataset Sharing) (6/10) veröffentlicht wurden" (Durchschnittliches Jahresgehalt (
durchschnittliches Jahresgehalt () Yen)
,Durchschnittliche Dienstjahre (Jahre)
,Durchschnittsalter (Jahre)
) ist ein Python-Sprachprogramm, das mit der Bibliothek matplotlib
visualisiert wird. (Alle Codes sind in "2. Quellcode" aufgeführt)
Wir haben Box-Whisker, Balkendiagramme und Kernel-Dichteschätzungen als Visualisierungsmethoden ausgewählt. Unternehmen, die nicht über alle Daten wie Gehaltsinformationen verfügen, werden von dieser Verarbeitung als fehlende Daten ausgeschlossen.
Bitte führen Sie die folgenden Aktionen aus, bevor Sie das Programm ausführen. Die Installation anderer Bibliotheken (japanize_matplotlib, seaborn usw.) muss ebenfalls im Voraus erfolgen. Ändern Sie außerdem die Codierungs- und Pfadspezifikationsmethode entsprechend der Ausführungsumgebung. Ändern Sie dann das sep-Attribut von read_csv je nach CSV-Erstellungsmethode in "sep =", "" oder "sep =" / t ".
Legt den Pfad zum Lesen der CSV-Formatdatei (Data Cleaned Dataset) fest.
dataset_filepath ='C:\\Users\\xxx\\Desktop\\xbrlReport\\xbrl_cleansing_qiita.csv'
df_dataset = pd.read_csv(dataset_filepath, header=0,sep=',', engine="python")
Bestimmen Sie den Dateipfad für die Ausgabe der Bilddatei.
plt.savefig('C:\\Users\\XXX\\Desktop\\xbrlReport\\XXXX.png')
Bei der Ausführung sind die Ergebnisse der Visualisierung von drei Arten von KDE das Box-Bart-Diagramm (durchschnittliches Jahresgehalt nach Branche, durchschnittliche Dienstjahre nach Branche, durchschnittliches Alter nach Branche), Balkendiagramm (durchschnittliches Jahresgehalt TOP50 (Informations- und Kommunikationsbranche)). Es wird als Bild ausgegeben.
In Bezug auf die Box Whisker des durchschnittlichen Jahresgehalts nach Branchen wurde zunächst der angegebene Datensatz nach Branchen gruppiert und das durchschnittliche Jahresgehalt für jede Branche berechnet. Danach haben wir das durchschnittliche Jahresgehalt nach Branchen sortiert und aus den erzielten Ergebnissen eine "sortierte Branchennamenliste mit durchschnittlichen Jahresgehältern" erstellt.
Code1
df_groupby_mean =dropped_dataset.groupby(['Industrie'], as_index=False).mean()
df_groupby_mean_s_by_salary = df_groupby_mean.sort_values('Durchschnittliches Jahresgehalt (Yen)')
df_gyoshu_label_by_salary = df_groupby_mean_s_by_salary['Industrie']
gyoshu_label_list_by_salary=df_gyoshu_label_by_salary.tolist()
Durch Anwenden der Liste in der Reihenfolge der Anzeige auf der Y-Achse zum Zeitpunkt der Visualisierung ist es möglich, das durchschnittliche Jahresgehalt nach Branchen zu visualisieren. Sie können die Differenz zwischen dem Durchschnittswert und dem Medianwert visuell überprüfen, indem Sie das Box-Whisker-Diagramm verwenden, das "Boxenplot" verwendet. Zusätzlich haben wir durch Zeichnen der Punkte mit "Stripplot" auch die Streuung visualisiert. Die durchschnittlichen Dienstjahre und das Durchschnittsalter werden ebenfalls durch Ausführen derselben Verarbeitung erstellt.
Code2
sns.stripplot(x='Durchschnittliches Jahresgehalt (Yen)', y ='Industrie',orient = 'h', data=df_dropped_dataset,size=3,edgecolor="gray",order=gyoshu_label_list_by_salary)
ax =sns.boxenplot(x='Durchschnittliches Jahresgehalt (Yen)', y='Industrie',orient = 'h', data=df_dropped_dataset,palette='rainbow',order=gyoshu_label_list_by_salary);
Es wurden nur Unternehmen der Informations- und Telekommunikationsbranche ausgewählt, und dann wurden die 50 besten Unternehmen aus den Ergebnissen der Sortierung nach durchschnittlichem Jahresgehalt (Yen) ausgewählt. (Ich habe die Informations- / Kommunikationsbranche unter Berücksichtigung der Qiita-Zuschauer ausgewählt.)
Code3
df_info=df_dropped_dataset[df_dropped_dataset["Industrie"] == "Informations- und Kommunikationsindustrie"]
df_info_sortby_salary = df_info.sort_values('Durchschnittliches Jahresgehalt (Yen)')[-50:]
Wie im Fall des Box-Bart-Diagramms werden die nach Gehalt sortierten Firmennamen aufgelistet und in der Reihenfolge der Anzeige auf der X-Achse verwendet. Danach können Sie die 50 besten Unternehmen mit einem durchschnittlichen Jahresgehalt zeichnen, indem Sie die Daten der Informations- / Kommunikationsbranche und die sortierte Liste an "barplot" übergeben.
Code4
df_info_label_list_sortby_salary=df_info_sortby_salary['Name der Firma'].tolist()
ax =sns.barplot(x="Name der Firma", y="Durchschnittliches Jahresgehalt (Yen)", data=df_info,palette='rocket',order=df_info_label_list_sortby_salary)
Indem Sie "[" Industrie "] ==" Informations- / Kommunikationsindustrie "" in Ihre Lieblingsbranche (Fischerei / Land- / Forstwirtschaft, Dienstleistungsbranche usw.) ändern, können Sie die TOP 50 anderer Branchen visualisieren. Sie können auch steuern, wie viele TOPs gezeichnet werden, indem Sie den Wert von "[-50:]" ändern. Obwohl einige Anpassungen erforderlich sind, können Sie auch gefilterte Ergebnisse erhalten, indem Sie "durchschnittliche Dienstjahre (Jahre)" und "Durchschnittsalter (Jahre)" außer dem durchschnittlichen Jahresgehalt hinzufügen. ..
Ich habe eine KDE gezeichnet, die drei Muster kombiniert: durchschnittliche Dienstjahre - durchschnittliches Jahresgehalt, durchschnittliches altersdurchschnittliches Jahresgehalt und durchschnittliche altersdurchschnittliche Dienstjahre. Anders als nach Branchen erhalten Sie aus der Vogelperspektive einen groben Überblick über das gesamte bei EDINET eingereichte Unternehmen.
Code5
sns.jointplot('Durchschnittliche Dienstjahre (Jahre)', 'Durchschnittliches Jahresgehalt (Yen)',data=df_dropped_dataset, kind="kde",color="#d9f2f8")
sns.jointplot('Durchschnittsalter (Jahre)', 'Durchschnittliches Jahresgehalt (Yen)',data=df_dropped_dataset, kind="kde",color="#fac8be")
sns.jointplot('Durchschnittsalter (Jahre)', 'Durchschnittliche Dienstjahre (Jahre)',data=df_dropped_dataset, kind="kde",color="#d6fada")
# -*- coding: utf-8 -*-
import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt
import matplotlib.ticker as ticker
import japanize_matplotlib # https://yolo.love/matplotlib/japanese/
def drop_unnecessary_data(dataset_filepath):
df_dataset = pd.read_csv(dataset_filepath, header=0,sep=',', engine="python")
df_dropped_dataset = df_dataset.dropna()
df_dropped_dataset = df_dropped_dataset.drop('#', axis=1)
df_dropped_dataset = df_dropped_dataset.drop('EDINETCODE', axis=1)
print(df_dropped_dataset)
print(df_dropped_dataset.info())
print('Anzahl der Zeilen',len(df_dropped_dataset))
return df_dropped_dataset
def make_label_list(dropped_dataset):
df_groupby_mean =dropped_dataset.groupby(['Industrie'], as_index=False).mean()
df_groupby_mean_s_by_salary = df_groupby_mean.sort_values('Durchschnittliches Jahresgehalt (Yen)')
df_gyoshu_label_by_salary = df_groupby_mean_s_by_salary['Industrie']
gyoshu_label_list_by_salary=df_gyoshu_label_by_salary.tolist()
df_groupby_mean_s_by_service = df_groupby_mean.sort_values('Durchschnittliche Dienstjahre (Jahre)')
df_gyoshu_label_by_service = df_groupby_mean_s_by_service['Industrie']
gyoshu_label_list_by_service=df_gyoshu_label_by_service.tolist()
df_groupby_mean_s_by_age = df_groupby_mean.sort_values('Durchschnittsalter (Jahre)')
df_gyoshu_label_by_age = df_groupby_mean_s_by_age['Industrie']
gyoshu_label_list_by_age=df_gyoshu_label_by_age.tolist()
return gyoshu_label_list_by_salary,gyoshu_label_list_by_service,gyoshu_label_list_by_age
def visualize_boxenplot_salary(gyoshu_label_list_by_salary,df_dropped_dataset):
plt.figure(figsize=(15, 10))
sns.stripplot(x='Durchschnittliches Jahresgehalt (Yen)', y ='Industrie',orient = 'h', data=df_dropped_dataset,size=3,edgecolor="gray",order=gyoshu_label_list_by_salary)
ax =sns.boxenplot(x='Durchschnittliches Jahresgehalt (Yen)', y='Industrie',orient = 'h', data=df_dropped_dataset,palette='rainbow',order=gyoshu_label_list_by_salary)
ax.grid(which = "major",color='lightgray',ls=':',alpha = 0.5)
ax.xaxis.set_minor_locator(ticker.AutoMinorLocator())
ax.xaxis.set_major_formatter(plt.FuncFormatter(lambda x, loc: "{:,}".format(int(x))))
plt.xlabel("Durchschnittliches Jahresgehalt (Yen)", fontsize=18)
plt.ylabel("Industrie",fontsize=16)
plt.title("Durchschnittliches Jahresgehalt nach Branchen", fontsize=24)
plt.gca().spines['right'].set_visible(False)
plt.gca().spines['top'].set_visible(False)
plt.gca().yaxis.set_ticks_position('left')
plt.gca().xaxis.set_ticks_position('bottom')
plt.savefig('C:\\Users\\xxx\\Desktop\\xbrlReport\\boxenplot_1.png')
plt.show()
def visualize_boxenplot_service(gyoshu_label_list_by_service,df_dropped_dataset):
plt.figure(figsize=(15, 10))
sns.stripplot(x='Durchschnittliche Dienstjahre (Jahre)', y ='Industrie',orient = 'h', data=df_dropped_dataset,size=3,edgecolor="gray",order=gyoshu_label_list_by_service)
ax =sns.boxenplot(x='Durchschnittliche Dienstjahre (Jahre)', y='Industrie',orient = 'h', data=df_dropped_dataset,palette='rainbow',order=gyoshu_label_list_by_service)
ax.grid(which = "major",color='lightgray',ls=':',alpha = 0.5)
ax.xaxis.set_minor_locator(ticker.AutoMinorLocator())
plt.xlabel("Durchschnittliche Dienstjahre (Jahre)", fontsize=18)
plt.ylabel("Industrie",fontsize=16)
plt.title("Durchschnittliche Betriebsjahre nach Branchen", fontsize=24)
plt.gca().spines['right'].set_visible(False)
plt.gca().spines['top'].set_visible(False)
plt.gca().yaxis.set_ticks_position('left')
plt.gca().xaxis.set_ticks_position('bottom')
plt.savefig("C:\\Users\\xxx\\Desktop\\xbrlReport\\boxenplot_2.png ")
plt.show()
def visualize_boxenplot_age(gyoshu_label_list_by_age,df_dropped_dataset):
plt.figure(figsize=(15, 10))
sns.stripplot(x='Durchschnittsalter (Jahre)', y ='Industrie',orient = 'h', data=df_dropped_dataset,size=3,edgecolor="gray",order=gyoshu_label_list_by_age)
ax =sns.boxenplot(x='Durchschnittsalter (Jahre)', y='Industrie',orient = 'h', data=df_dropped_dataset,palette='rainbow',order=gyoshu_label_list_by_age);
ax.grid(which = "major",color='lightgray',ls=':',alpha = 0.5)
ax.xaxis.set_minor_locator(ticker.AutoMinorLocator())
plt.xlabel("Durchschnittsalter (Jahre)", fontsize=18)
plt.ylabel("Industrie",fontsize=16)
plt.title("Durchschnittsalter nach Branchen", fontsize=24)
plt.gca().spines['right'].set_visible(False)
plt.gca().spines['top'].set_visible(False)
plt.gca().yaxis.set_ticks_position('left')
plt.gca().xaxis.set_ticks_position('bottom')
plt.savefig("C:\\Users\\xxx\\Desktop\\xbrlReport\\boxenplot_3.png ")
plt.show()
def visualize_jointplot(df_dropped_dataset):
sns.jointplot('Durchschnittliche Dienstjahre (Jahre)', 'Durchschnittliches Jahresgehalt (Yen)',data=df_dropped_dataset, kind="kde",color="#d9f2f8")
plt.savefig("C:\\Users\\xxx\\Desktop\\xbrlReport\\jointplot_1.png ")
plt.show()
sns.jointplot('Durchschnittsalter (Jahre)', 'Durchschnittliches Jahresgehalt (Yen)',data=df_dropped_dataset, kind="kde",color="#fac8be")
plt.savefig("C:\\Users\\xxx\\Desktop\\xbrlReport\\jointplot_2.png ")
plt.show()
sns.jointplot('Durchschnittsalter (Jahre)', 'Durchschnittliche Dienstjahre (Jahre)',data=df_dropped_dataset, kind="kde",color="#d6fada")
plt.savefig("C:\\Users\\xxx\\Desktop\\xbrlReport\\jointplot_3.png ")
plt.show()
def visualize_barplot(df_dropped_dataset):
df_info=df_dropped_dataset[df_dropped_dataset["Industrie"] == "Informations- und Kommunikationsindustrie"]
df_info_sortby_salary = df_info.sort_values('Durchschnittliches Jahresgehalt (Yen)')[-50:]
df_info_label_list_sortby_salary=df_info_sortby_salary['Name der Firma'].tolist()
plt.figure(figsize=(15, 12))
ax =sns.barplot(x="Name der Firma", y="Durchschnittliches Jahresgehalt (Yen)", data=df_info,palette='rocket',order=df_info_label_list_sortby_salary)
sns.set(style="ticks")
plt.xticks(rotation=90)
plt.subplots_adjust(hspace=0.8,bottom=0.35)
ax.grid(which = 'major',axis ='y', color='lightgray',ls=':',alpha = 0.5)
ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, loc: "{:,}".format(int(x))))
plt.xlabel("Name der Firma", fontsize=12)
plt.ylabel("Durchschnittliches Jahresgehalt (Yen)",fontsize=18)
plt.title("Informations- und Kommunikationsindustrie:Durchschnittliches Jahresgehalt TOP50", fontsize=24)
plt.gca().spines['right'].set_visible(False)
plt.gca().spines['top'].set_visible(False)
plt.gca().yaxis.set_ticks_position('left')
plt.gca().xaxis.set_ticks_position('bottom')
plt.savefig("C:\\Users\\xxx\\Desktop\\xbrlReport\\barplot_1.png ")
plt.show()
def main():
dataset_filepath ='C:\\Users\\xxx\\Desktop\\xbrlReport\\xbrl_cleansing_qiita.csv'
df_dropped_dataset = drop_unnecessary_data(dataset_filepath)
gyoshu_label_list_by_salary, gyoshu_label_list_by_service, gyoshu_label_list_by_age = make_label_list(df_dropped_dataset)
visualize_boxenplot_salary(gyoshu_label_list_by_salary,df_dropped_dataset)
visualize_boxenplot_service(gyoshu_label_list_by_service,df_dropped_dataset)
visualize_boxenplot_age(gyoshu_label_list_by_age,df_dropped_dataset)
visualize_jointplot(df_dropped_dataset)
visualize_barplot(df_dropped_dataset)
print("visualize finish")
if __name__ == "__main__":
main()
Dieser Artikel konzentrierte sich auf die Visualisierung von Rohdaten, aber mit einer kleinen Änderung dieser Daten ist es möglich, das Unternehmen zu analysieren. Wenn beispielsweise "durchschnittliche altersdurchschnittliche Dienstjahre" etwa 25 Jahre alt sind, ist bekannt, dass es nur wenige Rentner und Angestellte in der Mitte der Karriere gibt, so dass es möglich ist, solche Unternehmen zu extrahieren. Durch Hinzufügen des Unternehmensalters kann hier eine eingehendere Analyse durchgeführt werden. (Das Alter des Unternehmens kann aus XBRL-Daten mit dem Elementnamen "jpcrp_cor: FiscalYearCoverPage" ermittelt werden.) Unternehmen mit hohem Unternehmensalter und durchschnittlichen Dienstjahren über 42 Jahre altern. In Zukunft wird das Durchschnittsalter plötzlich sinken, wenn ältere Menschen in großen Mengen in den Ruhestand gehen, was zu einem plötzlichen Anstieg des "Nettoeinkommens" führt. (Nicht weil die Gewinnspanne des Unternehmens gestiegen ist, sondern weil der Gesamtbetrag des gezahlten Gehalts gesunken ist, was die höchsten "Vertriebsmanagementkosten" darstellt.) In Zukunft wird die Gewinnspanne aller Unternehmen mit abnehmender Altersverteilung der Mitarbeiter steigen. Es ist interessant, die Verteilung der Mitarbeiter zu betrachten, nicht nur die Veränderungen der Gewinnmargen. Darüber hinaus ist es auch möglich, die Zeitreihen von "Umsatz" der Anzahl der Mitarbeiter (Durchschnitt der vorherigen Amtszeit und dieser Amtszeit) und "Anzahl der Mitarbeiter" zu vergleichen und zu analysieren. Dies liegt daran, dass der Pro-Kopf-Umsatz aufgrund des Restrukturierungseffekts besser gesehen werden kann. Auf diese Weise hat die Möglichkeit, Mitarbeiterinformationen von EDINET zu erhalten, das Spektrum der Unternehmensanalyse erweitert. Wenn Sie an etwas anderem als dem hier Beschriebenen interessiert sind, führen Sie bitte eine Umfrage durch.
Bei Fragen zu diesem Artikel wenden Sie sich bitte an die folgende E-Mail-Adresse. e-mail:[email protected] (Natürlich sind auch Kommentare zu Qiita willkommen)
Diese E-Mail-Adresse ist die Kontaktstelle für Anfragen zum Entwicklungsausschuss von XBRL Japan, der den Artikel über Qiita schreibt. Ich werde. Daher können wir je nach Inhalt keine allgemeinen Anfragen zur Organisation beantworten. Bei technischen Fragen, Meinungen, Anfragen, Ratschlägen usw. zu XBRL können Sie sich jedoch gerne an uns wenden. Bitte beachten Sie, dass die Beantwortung einige Zeit in Anspruch nehmen kann, da die Ausschussmitglieder Freiwillige sind.
Recommended Posts