[PYTHON] Kleine Geschichte: Teilen Sie das Alphabet in beliebige Zahlen und geben Sie es aus (gelöst)

Überblick

Wenn ich verschiedene Dinge im Zusammenhang mit Pandas-Datenrahmen recherchiere und studiere, stoße ich manchmal auf eine Situation, in der ich im Namen der Erstellung eines Datenrahmens vorerst geeignete Daten speichern muss. Ich konnte so viele ganze Zahlen wie möglich machen, aber mir fielen keine Alphabete ein, und ich habe die ganze Zeit daran gearbeitet.

Es braucht nicht viel Zeit, weil es keine große Zahl ist, aber obwohl ich versuche, einfache Aufgaben zu automatisieren, hatte ich das Gefühl, während des Studiums einfache Aufgaben zu erledigen.

Nach ein wenig Recherche konnte ich es mit der Zeichenfolge in der Standardbibliothek lösen, daher werde ich es veröffentlichen, um das Gedächtnis zu fördern und den Pinsel nicht zu trocknen.

String-Modul

Laut dieser Site wurden viele der Funktionen, die einmal in string implementiert wurden, als Methoden auf str- und Unicode-Objekte migriert. Ich fand es vernünftig, dass ich es nicht so oft gesehen hatte.

Das Modul> string beginnt mit einer frühen Version von Python. In Version 2.0 wurden viele Funktionen, die nur in diesem Modul implementiert wurden, auf str- und unicode-Objektmethoden migriert.

Dieses Mal verwenden wir die Konstante ascii_lowercase, die in diesem Zeichenfolgenmodul bereitgestellt wird.

string.ascii_lowercase Ein Kleinbuchstabe, der ein Kleinbuchstaben enthält. Super einfach. Um es zu verwenden, müssen Sie die Zeichenfolge im Voraus importieren.

python


import string

print(string.ascii_lowercase)
print(type(string.ascii_lowercase)

Ausgabe


abcdefghijklmnopqrstuvwxyz
<class 'str'>

Da es sich um eine Zeichenfolge handelt, wird auch die Notation mithilfe von Indizes unterstützt.

python


print(string.ascii_lowercase[2])
print(string.ascii_lowercase[8:11])
print(string.ascii_lowercase[::-1])

Ausgabe


c
ijk
zyxwvutsrqponmlkjihgfedcba

Dieses Mal werde ich dies verwenden, um einen geeigneten Datenrahmen zu erstellen.

Datenrahmenerstellung

Nach dem Üben habe ich eine Funktion erstellt, damit Alphabete entsprechend der angegebenen Indexliste und Spaltenliste beliebig zugewiesen werden können. Ich bin nicht gut darin, Zahlen wie diese zu drehen, also ist es eine ziemlich unordentliche Funktion.

python


import pandas as pd
import string
from tabulate import tabulate

def make_variable_alphabet_dataframe(index_size, columns_size):
    index_list = [f"index{i}" for i in range(1, index_size+1)]
    columns_list = [f"column{i}" for i in range(1, columns_size+1)]
    alphabet_list = [list(string.ascii_lowercase[i-(columns_size-1):i+1]) for i in range(columns_size-1, index_size*columns_size, columns_size)]
    df = pd.DataFrame(alphabet_list, index=index_list, columns=columns_list)
    
    return df


df1 = make_variable_alphabet_dataframe(3, 4)
print(tabulate(df1, df1.columns, tablefmt='github', showindex=True))

Ausgabe


|        | column1   | column2   | column3   | column4   |
|--------|-----------|-----------|-----------|-----------|
| index1 | a         | b         | c         | d         |
| index2 | e         | f         | g         | h         |
| index3 | i         | j         | k         | l         |

Wenn die Größe größer als 26 ist, scheint None gespeichert zu sein.

python


df2 = make_variable_alphabet_dataframe(6, 6)
print(tabulate(df2, df2.columns, tablefmt='github', showindex=True))

Ausgabe


|        | column1   | column2   | column3   | column4   | column5   | column6   |
|--------|-----------|-----------|-----------|-----------|-----------|-----------|
| index1 | a         | b         | c         | d         | e         | f         |
| index2 | g         | h         | i         | j         | k         | l         |
| index3 | m         | n         | o         | p         | q         | r         |
| index4 | s         | t         | u         | v         | w         | x         |
| index5 | y         | z         |           |           |           |           |
| index6 |           |           |           |           |           |           |

Um ehrlich zu sein, weiß ich nicht **. Als ich das Beispiel verschoben habe, um "Natürlich wirf ich einen Fehler im Alphabet" zu schreiben, hat es funktioniert. Dies könnte das Gerücht sein, "aus irgendeinem Grund funktioniert es". Entspricht es der Liste oder der Spezifikation von DataFrame selbst? Ich habe versucht, es zu finden, aber ich verstehe es doch nicht. Ich mache mir Sorgen um die Sulme in meinen Backenzähnen, daher würde ich mich freuen, wenn Sie mir etwas beibringen könnten.

Nachtrag (2020/10/04)

Informationen wurden in den Kommentaren zur Verfügung gestellt. Es scheint, dass None automatisch im Datenrahmen gespeichert wird, solange die Anzahl der Elemente bis zur ersten Zeile ausreicht. Um genau zu sein, denke ich, dass "** Wenn Sie die Spalte so einstellen, dass die erste Zeile in 26 Spalten passt, wird kein Fehler ausgegeben **". Da Sie das Beispielprogramm veröffentlicht haben, lesen Sie bitte die Details.

das ist alles. Danke für Ihren Besuch. Das nächste Mal werde ich über gspread_formatting sprechen, das meiner Meinung nach aus irgendeinem Grund nur wenige Informationen im Internet enthält, einschließlich Qiita.

Recommended Posts

Kleine Geschichte: Teilen Sie das Alphabet in beliebige Zahlen und geben Sie es aus (gelöst)
Teilen Sie den Datensatz (ndarray) mit NumPy in beliebige Proportionen
Die Geschichte von Python und die Geschichte von NaN
[Python] Ändere das Alphabet in eine Zahl