Bardiagramm – Passwortlänge (Python)

Die Frage lautete: Wissen Sie/weißt Du, ab wieviele Zeichen ein Kennwort als relativ sicher gilt?

Es konnte zwischen den Werten 5, 8 und 15 gewählt werden.

Diese Frage wurde in einer Umfrage zum Secaware4school-Projekt gestellt.

import numpy as np
import pandas as pd
import matplotlib
df = pd.read_csv("passwort-beantwortet.csv",
                 delimiter=';')

Statistik zu den Passwortlängen

passworte_ohne_leerangabe = df.query('Passwortlaenge > 0')

Die Antworten aggregiert nach den vorgegebenen Antwortmöglichkeiten

gruppiert = df.groupby("Passwortlaenge").agg(
    {"Passwortlaenge":["count"]}).query('Passwortlaenge > 0').apply(list)

Ausgabe als Bardiagram

ax = pd.Series(index=b.tolist(),
              data=a.tolist(),
              name='pwd')
#ax[0].color(red)
ax.plot(kind='bar',
        title ="Sichere Passworte",
        legend=False,
        fontsize=16,
        rot=0,
        colormap='RdYlGn')
<AxesSubplot:title={'center':'Sichere Passworte'}>
../_images/output_8_1.png

Die Säulen lassen sich mit der groupby erzeugten Struktur nicht einzeln färben. Deshalb müssen die Werte einzlen extahiert und in normale Listen konvertiert werden.

werte  = gruppiert['Passwortlaenge']['count'].values
label  = gruppiert['Passwortlaenge'].index.values

position = [i * 3 for i in range(len(b.tolist()))]
werte = werte.tolist()
label= label.tolist()

plt.figure(figsize=[10, 7])

plt.bar(position, werte, width=2, edgecolor='blueviolet',
        color=['r', 'c', 'g', 'b', 'c', 'k',
               'olive', 'gray', 'y', 'pink'], linewidth=1)

plt.title('Als sicher eingestufte Passwortlänge', fontsize=15)

plt.xticks(position,label)
plt.xlabel('Passwortlänge', fontsize=15)
plt.ylabel('Anzahl Stimmen', fontsize=15)
plt.show()
../_images/output_10_0.png