[PYTHON] pandas Matplotlib Résumé par utilisation

Pandas

Lecture des données

import pandas as pd
df = pd.read_csv('data.csv')

Produire des informations statistiques

pandas.DataFrame.describe — pandas 1.0.4 documentation

df.describe()
TeamId	Score
count	4.709900e+04	47099.000000
mean	4.409698e+06	0.749839
std	9.901986e+05	0.099161
min	2.792400e+04	0.000000
25%	4.501446e+06	0.760760
50%	4.774358e+06	0.770330
75%	4.915774e+06	0.779900
max	5.051599e+06	1.000000

#Réduisez les colonnes de sortie
df['Score'].describe()
count    47099.000000
mean         0.749839
std          0.099161
min          0.000000
25%          0.760760
50%          0.770330
75%          0.779900
max          1.000000
Name: Score, dtype: float64

Affinez les données

Python Pandas: Boolean indexing on multiple columns - Stack Overflow

total_count = df['Score'].count() # 47099
partial_count = df[(0.6 < df['Score']) & (df['Score'] < 0.8)]['Score'].count() # 42893

Convertir les données catégorisées en nombres

pandas.Series.map — pandas 1.0.4 documentation

# Embarked(C, Q, S)Valeur numérique(1, 2, 3)Conversion en
df_train['Embarked'] = df_train['Embarked'].map({'C': 1, 'Q': 2, 'S': 3})

Renommer la colonne

pandas.DataFrame.rename — pandas 1.0.4 documentation

# Sex(female, male)Valeur numérique(0, 1)Convertir et changer le nom de la colonne en Homme
df_train['Sex'] = df_train['Sex'].map({'female': 0, 'male': 1})
df_train = df_train.rename(columns={'Sex': 'Male'})

Vérifiez les valeurs manquantes

pandas.isnull — pandas 1.0.4 documentation pandas.DataFrame.sum — pandas 1.0.4 documentation

df_train.isnull().sum()
PassengerId      0
Survived         0
Pclass           0
Name             0
Male             0
Age            177
SibSp            0
Parch            0
Ticket           0
Fare             0
Cabin          687
Embarked         2
dtype: int64

Exclure les valeurs manquantes

#Exclure toutes les lignes contenant des valeurs manquantes
df_train_dn = df_train.dropna()
#Exclure les colonnes spécifiées par les colonnes
df_train_dn = df_train_dn.drop('Cabin', axis='columns

Appliquer la fonction aux valeurs de ligne / colonne

pandas.DataFrame.apply — pandas 1.0.4 documentation

#Extrait du titre
def getTitle(row):
    name = row['Name']
    p = re.compile('.*\ (.*)\.\ .*')
    surname = p.search(name)
    return surname.group(1)

df_train['Title'] = df_train.apply(getTitle, axis=1)
df_train['FamilyName'] = df_train.apply(getFamilyName, axis=1)

Extraire la valeur

Indexing and selecting data — pandas 1.0.4 documentation Obtenir / modifier la valeur de n'importe quelle position avec les pandas à, iat, loc, iloc | note.nkmk.me

#Spécifiez le libellé de la colonne
df_train.loc[:, ['Title', 'FamilyName']].head()

# 	Title	FamilyName
# 0	Mr	Braund
# 1	Mrs	Cumings
# 2	Miss	Heikkinen
# 3	Mrs	Futrelle
# 4	Mr	Allen

Calculer la moyenne etc. pour chaque catégorie (GROUP BY)

Comment utiliser Pandas groupby --Qiita

#Trouvez l'âge moyen et le nombre de données pour chaque titre

s_age_mean_groupby_title = df_train.groupby('Title').mean().loc[:, 'Age']
s_age_count_groupby_title = df_train.groupby('Title').count().loc[:, 'Age']

df_age = pd.concat([s_age_mean_groupby_title, s_age_count_groupby_title], axis='columns')
df_age.columns.values[0] = 'AgeMean'
df_age.columns.values[1] = 'AgeCount'
df_age.sort_values(by='AgeCount', ascending=False)

#        AgeMean   AgeCount	
# Mr	 32.368090 398
# Miss	 21.773973 146
# Mrs	 35.728972 107
# Master  4.574167  36
# Rev    43.166667   6

Trier les valeurs

pandas.DataFrame.sort_values — pandas 1.0.5 documentation

Extraire des valeurs uniques

pandas.unique — pandas 1.0.5 documentation

Couleur lors de l'affichage des blocs de données

pandas.io.formats.style.Styler.apply — pandas 1.0.5 documentation python - Pandas style function to highlight specific columns - Stack Overflow

Matplotlib

Définir l'axe du graphique

matplotlib.pyplot.axis — Matplotlib 3.2.1 documentation

plt.axis(xlim=(-0.005, 1.005), ylim=(0, 9000))

matplotlib.axes.Axes.set_ylim — Matplotlib 3.2.2 documentation Il est également possible de définir pour chaque axe avec set_xlim () et set_ylim ().

#Définissez la limite supérieure de l'axe y sur 100
plt.gca().set_ylim(top=100)

Ajuster l'étiquette

Spécifiez la position de l'étiquette

plt.gca().yaxis.set_label_position('right')

Spécifiez les coordonnées de l'étiquette

#Spécifiez la position de l'étiquette sur la droite et définissez les coordonnées(x, y) = (1.25, 0.5)Décalage
#(Par rapport aux coordonnées par défaut à droite(1.25, 0.5)Se comporte hors)
plt.gca().yaxis.set_label_position('right')
plt.gca().yaxis.set_label_coords(1.25, 0.5)

Masquer l'étiquette

#Masquer l'étiquette de l'axe des x
plt.gca().set_xticklabels([])
#Masquer l'étiquette de l'axe y
plt.gca().set_yticklabels([])

Placez les personnages dans n'importe quelle position

matplotlib.pyplot.text — Matplotlib 3.1.2 documentation

#Libellé de l'axe Y lorsqu'il y a plusieurs graphiques(Response Time (s))Remplir
plt.gcf().text(
  plt.gcf().axes[0].get_position().x1 - 0.45,
  plt.gcf().axes[0].get_position().y1 - 0.5,
  'Response Time (s)',
  rotation=90
)

Ajuster la largeur entre les graphiques

matplotlib.pyplot.tight_layout — Matplotlib 3.1.2 documentation [Python] Présentation de la façon d'éliminer les caractères superposés générés par Matplotlib! │ Mémorandum du débutant Python

plt.tight_layout()

Afficher la légende

matplotlib.pyplot.legend — Matplotlib 3.1.2 documentation

plt.legend(["legend1", "legend2"])

Présenté en japonais

Spécifiez la police avec prop. Comment afficher facilement le japonais avec Matplotlib (Windows) | Gammasoft Co., Ltd.

plt.legend(["Valeur au carré"], prop={"family":"MS Gothic"})

Afficher en dehors du graphique

Spécifiez la position avec bbox_to_anchor. python - How to put the legend out of the plot - Stack Overflow

plt.legend(["Valeur au carré"], prop={"family":"MS Gothic"}, bbox_to_anchor=(1.05, 1))

Affiche une inclinaison linéaire approximative d'un diagramme de dispersion dessiné avec Matplotlib

#Calculer la pente lorsqu'elle est approximée linéairement
a = np.polyfit(x, y, 1)[0]

Changement de la notation d'index de l'étiquette en notation normale

plt.ticklabel_format(style='plain')

Afficher les numéros sur l'étiquette séparés par trois chiffres

Dessinez les nombres sur l'étiquette de l'axe séparés par trois chiffres (matplotlib) --Qiita

plt.gca().xaxis.set_major_formatter(plt.FuncFormatter(lambda x, loc: '{:,}'.format(int(x))))

Trier les étiquettes

Legend guide — Matplotlib 3.2.2 documentation python - How is order of items in matplotlib legend determined? - Stack Overflow

handles = []
for label in labels:
  handle = plt.scatter(..., label=label)
  handles.append(handle)

#Définir une fonction comme critère de tri dans lambda
labels, handles = zip(*sorted(zip(labels, handles)), key=lamdba x: x[0])

Ajuster la taille du graphique

matplotlib.pyplot.subplots_adjust — Matplotlib 3.2.2 documentation

plt.figure()

plt.subplot(121)
# ...
plt.subplot(122)
# ...

#Ajuster la largeur entre le sous-tracé
plt.subplots_adjust(wspace=1, right=3)

Utiliser ggplot

ggplot est un outil graphique souvent utilisé dans R.

La caractéristique est qu'il peut être décrit de sorte que les graphiques de plusieurs couches se chevauchent. Qu'est-ce que R | ggplot2 | hanaori | note

plt.style.use('ggplot')

#Sexe du survivant de l'intrigue
df_train_survived = df_train_dn[df_train_dn.Survived == 1]
df_train_survived_age = df_train_survived.iloc[:, 3]
df_train_survived_male = df_train_survived.iloc[:, 2]
plt.scatter(
  df_train_survived_age,
  df_train_survived_male,
  color="#cc6699",
  alpha=0.5
)

#Tracez le sexe des morts
df_train_dead = df_train_dn[df_train_dn.Survived == 0]
df_train_dead_age = df_train_dead.iloc[:, 3]
df_train_dead_male = df_train_dead.iloc[:, 2]
plt.scatter(
  df_train_dead_age,
  df_train_dead_male,
  color="#6699cc",
  alpha=0.5
)

plt.show()

Autre

Arrondi

9.4. decimal — Decimal fixed point and floating point arithmetic — Python 2.7.18 documentation

Spécifiez le nombre de chiffres avec le premier argument de Decimal.quantize ().

decile = lambda num: Decimal(num).quantize(Decimal('.001'), rounding=ROUND_HALF_UP)
histogram = Counter(decile(score) for score in df['Score'])
print(histogram.keys())
# dict_keys([Decimal('0.761'), Decimal('0.000'), Decimal('0.775'), ...])

Utilisez index avec map ()

Getting index of item while processing a list using map in python - Stack Overflow

Modification de l'affichage du nombre de chiffres du type «float»

Comment sortir en spécifiant le nombre de chiffres (nombres, décimales, etc.) dans Python print | HEADBOOST

#Spécifiez le nombre de chiffres après la virgule décimale de l'exposant sous forme de 3 chiffres
# e.g. float_number = 7.918330583e-06
'{:.3e}'.format(float_number)
# 7.918e-06

Recommended Posts

pandas Matplotlib Résumé par utilisation
Résumé de l'utilisation de base de Pandas
Résumé matplotlib
Trier par pandas
résumé de l'utilisation de pytest
Résumé des notes personnelles des pandas
Résumé de l'utilisation de pyenv
Résumé Faker par langue
[Exercice Numpy / pandas / matplotlib 01]
Rapport de construction d'environnement par python (matplotlib, pandas, sphinx) + wkhtmltopdf
Mémorandum (pseudo Vlookup par pandas)
Résumé d'utilisation pratique de Flask
Superposition transparente de l'histogramme par Matplotlib
Résumé de l'utilisation de Pipenv (pour moi-même)
Résumé récent de l'étude des pandas python
Standardisez par groupe avec les pandas
Affichage graphique en temps réel par matplotlib
Mémo de visualisation par pandas, seaborn
Index d'utilisation de certains pandas
Méthode de visualisation de données utilisant matplotlib (+ pandas) (5)
[Numpy / pandas / matplotlib Exercice 01] Mettre à jour le modèle
Résumé de l'implémentation de base par PyTorch
Résumé de l'apprentissage automatique par les débutants de Python
Traçage de données polyvalent avec pandas + matplotlib
Résumé de l'implémentation de scratch 1D-CNN, 2D-CNN par Pytorch
Résumé de la grammaire fréquemment utilisée dans les pandas
Méthode de visualisation de données utilisant matplotlib (+ pandas) (3)
Manipuler des chaînes avec un groupe pandas par
Résumé de la génération de nombres aléatoires par Numpy
Cas utilisant un tracé de pandas, cas utilisant un tracé matplotlib (pur)
Créer une application graphique par Kivy (y compris matplotlib)
Lien récapitulatif des bases de Pandas pour les débutants
Méthode de visualisation de données utilisant matplotlib (+ pandas) (4)
Génération de fonctionnalités avec pandas group par