Montag, Januar 27, 2020

Pandas dataframe als input für matplotlib.pyplot.boxplot

Habe ich ein pandas dataframe die wie folgt aussieht:

[('1975801_m', 1      0.203244
10    -0.159756
16    -0.172756
19    -0.089756
20    -0.033756
23    -0.011756
24     0.177244
32     0.138244
35    -0.104756
36     0.157244
40     0.108244
41     0.032244
42     0.063244
45     0.362244
59    -0.093756
62    -0.070756
65    -0.030756
66    -0.100756
73    -0.140756
77    -0.110756
81    -0.100756
84    -0.090756
86    -0.180756
87     0.119244
88     0.709244
102   -0.030756
105   -0.000756
107   -0.010756
109    0.039244
111    0.059244
Name: RTdiff), ('3878418_m', 1637    0.13811
1638   -0.21489
1644   -0.15989
1657   -0.11189
1662   -0.03289
1666   -0.09489
1669    0.03411
1675   -0.00489
1676    0.03511
1677    0.39711
1678   -0.02289
1679   -0.05489
1681   -0.01989
1691    0.14411
1697   -0.10589
1699    0.09411
1705    0.01411
1711   -0.12589
1713    0.04411
1715    0.04411
1716    0.01411
1731    0.06411
1738   -0.25589
1741   -0.21589
1745    0.39411
1746   -0.13589
1747   -0.10589
1748    0.08411
Name: RTdiff)

Ich würde gerne als input für die mtplotlib.pyplot.boxplot-Funktion.

den Fehler bekomme ich von matplotlib.pyplot.boxplot(mydataframe) ist ValueError: cannot set an array element with a sequence

Habe ich versucht zu verwenden list(mydataframe) statt mydataframe. Das scheitert mit der gleichen Fehlermeldung.

Ich habe auch versucht matplotlib.pyplot.boxplot(np.fromiter(mydataframe, np.float)) – das schlägt mit ValueError: setting an array element with a sequence.

  • pandas dataframes haben Ihre eigenen boxplot-Methode (d.h. mydataframe.boxplot()). Nicht, dass Sie, wo Sie sein müssen?
  • Ich möchte zeichnen Sie neben etwas anderes, die pandas boxplot-Funktion erstellt eine neue Figur für jedes boxplot-set. auch, offenbar, es wird nicht lassen Sie mich anpassen, Farbe oder position.
  • Es ist schwierig, aber Sie können es tun. Siehe meine Antwort
InformationsquelleAutor TheChymera | 2013-04-18

1 Kommentar

  1. 10

    Es ist nicht klar, dass Ihre Daten in einem DataFrame. Es erscheint eine Liste der Serien-Objekte.

    Sobald es wirklich in einen DataFrame, der trick dabei ist das erstellen Ihrer Figur und Achsen vor der Zeit und verwenden die **kwargs, die Sie normalerweise verwenden würden, mit matplotlib.axes.boxplot. Sie müssen auch sicherstellen, dass Ihre Daten einen DataFrame und nicht eine Reihe

    import numpy as np
    import matplotlib.pyplot as plt
    import pandas
    
    fig, ax = plt.subplots()
    df = pandas.DataFrame(np.random.normal(size=(37,5)), columns=list('ABCDE'))
    df.boxplot(ax=ax, positions=[2,3,4,6,8], notch=True, bootstrap=5000)
    ax.set_xticks(range(10))
    ax.set_xticklabels(range(10))
    plt.show()

    Gibt mir:Pandas dataframe als input für matplotlib.pyplot.boxplot

    Gelingt das nicht, können Sie einen ähnlichen Ansatz, die Schleife durch die Spalten, die Sie möchten plot mit Ihrem ax Objekt direkt.

    import numpy as np
    import matplotlib.pyplot as plt
    import pandas
    
    df = pandas.DataFrame(np.random.normal(size=(37,5)), columns=list('ABCDE'))
    fig, ax = plt.subplots()
    for n, col in enumerate(df.columns):
        ax.boxplot(df[col], positions=[n+1], notch=True)
    
    ax.set_xticks(range(10))
    ax.set_xticklabels(range(10))
    plt.show()

    Gibt:
    Pandas dataframe als input für matplotlib.pyplot.boxplot

Kostenlose Online-Tests