Conseils personnels lorsque vous faites diverses choses avec Python 3

Aperçu

J'écrirai les connaissances que j'ai acquises lors de l'apprentissage automatique et de l'exploration de données avec VS Code en Python 3.

Je sais que c'est difficile à lire.

Mis à jour de temps en temps.

Bonnes pratiques personnelles pour créer un environnement de développement lorsque Python3 est uniquement

Construction de l'environnement de développement Python3 + venv + VSCode + macOS - Qiita

Comparaison de la bibliothèque de dessins

Comparaison de la bibliothèque de dessins Jupyter-notebook-Qiita

Visualisation interactive

Utilisez ipywidgets et Bokeh pour la visualisation interactive-Qiita

Quand j'essaye de faire des ipywidgets avec [l'extension jupyter] de VSCode (https://marketplace.visualstudio.com/items?itemName=donjayamanne.jupyter), je ne peux pas l'utiliser parce que je ne peux pas lire autour du script. support for ipython/jupyter widgets · Issue #21 · DonJayamanne/vscodeJupyter Faisons-le tranquillement avec Jupyter du navigateur

échantillon

https://github.com/bokeh/bokeh/blob/master/examples/howto/notebook_comms/Jupyter%20Interactors.ipynb

Si vous obtenez une erreur indiquant que pylint n'a pas de ~ lors de l'utilisation de numpy, accédez à VSCode settings.json

    "python.linting.pylintArgs": [
        "--extension-pkg-whitelist=numpy"
    ]

Erreur d'absence de membre dans Pylint-Qiita

La raison pour laquelle l'erreur ValueError: n_samples = 1 should be> = n_clusters = 3 apparaît lorsque k-means est exécuté.

Puisque les données requises doivent être bidimensionnelles, elles s'ajoutent et sont inefficaces dans ce blog, il est donc bon de faire quelque chose comme sample_data.iloc [:, 0: 1].

Cela peut extraire la première colonne, qui est la même que lorsque sample_data.iloc [:, 0] est défini, mais il semble qu'elle sera représentée en deux dimensions en définissant 0: 1 et l'erreur ci-dessus Ne sortira pas

Jour 6 jusqu'à comprendre le blog du capitaine de l'apprentissage automatique / clustering-IT

Même si df.append (df2) est fait avec df = pd.DataFrame (), il n'est pas ajouté à df.

Doit être df = df.append (df2)

python - Appending to an empty data frame in Pandas? - Stack Overflow

Si vous écrivez le nom du type après: (Type Hints), IntelliSense sera terminé.

Cependant, Type Hints semble être synonyme de simple commentaire, donc si vous passez un objet d'un type qui ne correspond pas, linter ne se mettra pas en colère et ne sera pas vérifié de type tant qu'il ne sera pas exécuté.

Monde typé commençant par Python-Qiita

Portée des membres de classe

Résumé de la portée des membres de la classe Python --Qiita

Lorsque vous souhaitez récupérer les données des pandas de manière agréable

Application d'itération et de fonction de données Python pandas, pipe --StatsFragments

Lorsque vous voulez un index lorsque vous pour chaque liste

Liste index (énumération) - Site d'apprentissage de l'introduction à l'application de Python

Lorsque vous souhaitez convertir le type du contenu de dataframe

Pandas: Converting to numeric, creating NaNs when necessary

Bonne combinaison de pip-compile et pip-sync

Gestion facile des paquets Python avec les outils liés à pip - Qiita

Illustration lors de la concaténation et de la combinaison de DataFrames

Ajouter lorsque vous souhaitez simplement rejoindre verticalement, rejoindre lorsque vous souhaitez rejoindre horizontalement

Traitement de concaténation / jointure de données de diagramme pandas Python --StatsFragments

Si le montant est important lors de l'impression du pandas dataFrame, il sera omis, mais si vous le définissez arbitrairement, vous pouvez tout afficher

pd.set_option("display.max_rows", 10)

Empêchez les pandas d'omettre les problèmes d'affichage et les notes de solution au travail.

Lors du tri d'une liste multidimensionnelle, définissez la clé de tri sur lambda

[[Python] Trier # Tri de liste multidimensionnel](http://qiita.com/fantm21/items/6df776d99356ef6d14d4 # Tri de liste multidimensionnel)

Comment trier par structure de données

Résumé du tri Python (liste, type de dictionnaire, série, DataFrame) --Qiita

Si vous utilisez isort, l'importation sera correctement reformatée.

code-python-isort - Visual Studio Marketplace

%sql select * from hoge Une extension jupyter qui peut être poussée dans un DataFrame ou quelque chose simplement en écrivant ipython-sql

J'ai créé un outil pour convertir Jupyter py en ipynb avec VS Code - Qiita

J'ai créé un outil pour convertir Jupyter py en ipynb avec VS Code --Qiita

Le premier append apparaît comme un append avec IntelliSense fonctionnant, mais le dernier ne sort pas

tttt = pd.DataFrame()
tttt.append(None)
tttt = df[["label"]]
tttt.append(None)

C'est parce que vous ne connaissez pas le type de l'argument, donc si vous spécifiez le type après df [[“ label ”]] en utilisant ʻassert is instance` ou quelque chose, append apparaîtra dans IntelliSense.

Comment écrire Python pour faire fonctionner IntelliSense --Ajobuji Hoshi Tsushin

mérou très pratique

Regroupement / agrégation légèrement avancé avec l'accesseur pandas Python / Grouper-StatsFragments

Vous pouvez également regrouper les données de séries chronologiques toutes les 1 seconde ou tous les jours.

Vous ne pouvez remplacer la chaîne cible que par .replace (" hoge "," toHoge "),

Vous pouvez utiliser des expressions régulières comme .replace (". * "," +1 ", regex = True)

Un super débutant en apprentissage automatique a lu et résumé un article que tout le monde dit être bon

Un super débutant en apprentissage automatique a lu et résumé un article que tout le monde dit être bon - Qiita

Si vous souhaitez créer une matrice de confusion, vous pouvez le faire immédiatement comme ceci

from sklearn.metrics import confusion_matrix

test_label_lb = []  #Étiquette de réponse correcte
p_label = []  #Étiquette estimée

cmx_data = confusion_matrix(y_true=test_label_lb, y_pred=p_label)
labels = ["A", "B", "C"]
df_cmx = pd.DataFrame(cmx_data, index=labels, columns=labels)

Erreurs courantes commises par les développeurs lors de l'utilisation de Python pour l'analyse de Big Data|la programmation| POSTD

Vous pouvez afficher une carte avec jupyter quel que soit le métro

Folium

import folium
m = folium.Map(location=[33.763, -84.392], zoom_start=17)
folium.Marker(
    location=[33.763006, -84.392912],
    popup='World of Coca-Cola'
).add_to(m)
m

Est-il plus intelligent d'utiliser lambda?

Comment utiliser map / filter en Python3 --- Une histoire qui semble aller quelque part

Bel exemple d'intrigue

Maîtriser la fonction de tracé des pandas Python-StatsFragments

Puisque l'itérateur est renvoyé par la carte et le filtre

L'itérateur avance si le contenu est retiré avec list () etc.

num_map = map(lambda n: n + 1, np.random.random(1000))
print(list(num_map)) #Voici la valeur

num_filter = filter(lambda n: n > 0.5, np.random.random(1000))
print(list(num_filter)) #Voici la valeur

print(list(num_map)) #N'est plus là
print(list(num_filter)) #N'est plus là

Si vous voulez trouver la clé du dict dont la valeur est max, vous pouvez aller sur une ligne

max(dic, key=lambda i: dic[i])

Path lib est facile à utiliser le chemin

Pour Python 3.4 ou version ultérieure, vous devez supprimer os.path et utiliser pathlib

from pathlib import Path
LOG_DIR = "/Users/your_name/log"

Path(LOG_DIR).joinpath("log.json") #Ou chemin(LOG_DIR) / "log.json"
# PosixPath('/Users/your_name/log/log.json')Devient

Path(LOG_DIR).joinpath("log.json").exists() 
# False

Multi-processus utilisant le multi-traitement

Comment effectuer un traitement parallèle multicœur avec python

C'est facile car vous pouvez le passer convenablement dans la gamme

Wrapper pour divers outils de dessin de graphique HoloViews

HoloViews peut être la norme pour les outils de visualisation Python Graphique de base des HoloViews dans une seule ligne

Afficher la barre de progression

Afficher la barre de progression en Python (tqdm)

Si vous passez un objet itérable, vous pouvez voir combien d'itérations? Il progresse par seconde, c'est donc un bon guide.

Les étiquettes peuvent ressortir lorsque savefig avec matplotlib

bbox_inches = "tight" ou quelque chose du genre

Si vous agrandissez la police ou créez un graphique de paysage ou de portrait, l'étiquette peut ressortir avec savefig, donc si vous faites .savefig (" test.png ", bbox_inches =" tight "), elle ressortira magnifiquement.

Je veux mesurer le temps d'exécution

Jupyter Notebook>% timeit range (100)> Mesure du temps de traitement> %% timeit> Mesure du temps de traitement de plusieurs phrases Histoire de mesurer le temps d'exécution du code avec IPython

Avec Jupyter, vous pouvez obtenir le temps d'exécution de func avec % time func (), mais c'est plutôt flou Si vous définissez % timeit func (), il sera exécuté plusieurs fois et mesuré.

[Extension jupyter] de VSCode (https://marketplace.visualstudio.com/items?itemName=donjayamanne.jupyter) ne reconnaît pas %% timeit, il semble donc impossible pour Jupyter de VSCode d'évaluer plusieurs lignes ( Eh bien, ça devrait être une fonction)

Y a-t-il NaN dans ce DataFrame?

Y a-t-il NaN dans le DataFrame pandas? df.isnull (). values.any () est facile à retenir et rapide, donc c'est bien, mais cela dépend du type, alors essayez-le.

Conseils pour un traitement à grande vitesse avec Pandas

Trois conseils pour maintenir les performances des pandas Python

problème lent de saisie semi-automatique avec pythonVSCode

Slow auto complete speed for custom modules python #903 Slow autocompletion/formatting #581

Si vous ajoutez ce qui suit à VSCode settings.json, il sera préchargé.

"python.autoComplete.preloadModules": [
    "pandas",
    "numpy",
    "matplotlib"
]

En conséquence, je pense que les suggestions telles que pandas.DataFrame () sont plus rapides, mais je pense que cela ne change pas lorsque l'inférence de type est requise. Ce sera plus rapide si vous le spécifiez avec ʻassert is instance`, mais vous ne pouvez pas le faire un par un ...

df = func_something()
df.sum() #Sum sort lentement ici

assert isinstance(df, pd.DataFrame)
df.sum() #Ici la somme sort bientôt

Problème d'épidémie massive de zombies lors du traitement multi-processus avec Pool avec Jupyter

Lors de la création d'un zombie lors de l'utilisation du multitraitement dans IPython

#p = Pool()
p.terminate()

Tuer ou

with Pool() as p:
    results = p.map(func, range(0, 100))

Utiliser avec

Pylint se fâche avec E0602 lors du référencement d'une variable lambda avec double filtre ou carte

Si vous trouvez une correspondance dans list_ab qui correspond au préfixe dans list_prefix (bien que cet exemple ne soit pas très bon ...)

list_ab = ["aa_a", "aa_b", "ab_a", "ab_b", "ba_a", "ba_b"]
list_prefix = ["aa", "ab"]
print(list(
    filter(lambda a: True in map(lambda b: a.startswith(b), list_prefix),
            list_ab)
))  # ['aa_a', 'aa_b', 'ab_a', 'ab_b']

Dans ce cas, ʻa` se fâche contre E0602 (mais comme pylint se met en colère, il peut être exécuté et le résultat est comme prévu).

from itertools import compress
print(list(
    compress(list_ab,
                [True in [a.startswith(b) for b in list_prefix] for a in list_ab]
                )
))  # ['aa_a', 'aa_b', 'ab_a', 'ab_b']

Il est bon d'écrire en notation d'inclusion de liste en utilisant compress.

[Python] Que faire lorsque python manque de mémoire

En résumé

Continuer à utiliser joblib au lieu de pickle

L'effet est faible car la compression ne fonctionne pas tellement en termes de données, mais elle diminue. Puisqu'il est compressé, la vitesse d'exportation est naturellement plus lente que picke

Lorsque compless = 0, il est décompressé, donc il aura à peu près la même taille que lorsqu'il a été sorti avec pickle, mais joblib est plus facile car il n'est pas nécessaire d'écrire avec open in dump and load.

import os
import pickle

import joblib
import numpy as np
import pandas as pd

dump_data = np.random.randn(10000000)

with open("dump_data.pkl", "wb") as f:
    pickle.dump(dump_data, f)

print(os.path.getsize("dump_data.pkl") / 1024 / 1024, "MB")
# 76.29409885406494 MB

joblib.dump(dump_data, "dump_data", compress=3)
print(os.path.getsize("dump_data") / 1024 / 1024, "MB")
# 73.5648946762085 MB

# joblib.load("dump_data") #Lis

Exemples de dessin Seaborn

[Explication de toutes les méthodes Seaborn (Partie 1: Liste des graphiques)](http://own-search-and-study.xyz/2017/05/02/ Explication de toutes les méthodes Seaborn (Partie 1: Liste des graphiques) / ) Visualisation des données avec Python - Dessinez une carte de chaleur fraîche Un superbe dessin graphique avec python -seaborn améliore l'analyse et la visualisation des données, partie 1

Si vous obtenez une erreur egg_info lorsque pip-compile

Je pense que cela arrive souvent en relation avec matplotlib et seaborn, mais il y a des cas où pip-compile ne peut pas être effectué en raison d'une erreur telle que egg_info. Dans ce cas, je pense que pip-compile --rebuild fonctionnera. Référence: https://github.com/jazzband/pip-tools/issues/586

Lorsque vous souhaitez importer à partir d'un autre répertoire

Résumé de l'importation de fichiers en Python 3

Est-il préférable de créer et de lire «__init __. Py»?

Utiliser Plotly à partir de l'extension Jupyter de Visual Studio Code

Très pratique

Lorsque HTML (html_code) et ʻinit_notebook_mode () ʻ sont exécutés en même temps dans la même cellule, ils ne sont pas affichés. Donc, si vous exécutez d'abord seulement HTML (html_code) puis exécutez ʻinit_notebook_mode () `, cela fonctionnera (une fois qu'il peut être affiché, il est correct de l'exécuter sur la même cellule à la fois) Parce que la charge JS est asynchrone?

Recommended Posts

Conseils personnels lorsque vous faites diverses choses avec Python 3
Conseils à savoir lors de la programmation de compétitions avec Python2
Essayez différentes choses avec PhantomJS
[Astuces] Gérez Athena avec Python
Manipulez diverses bases de données avec Python
Erreur lors de la lecture avec python
Précautions lors de l'utilisation de Python avec AtCoder
Choses à garder à l'esprit lors de l'utilisation de cgi avec python.
Quand matplotlib ne fonctionne pas avec python2.7
Lors de l'utilisation de MeCab avec python dans virtualenv
Précautions lors de l'utilisation de six avec Python 2.5
[Python] Formater quand to_csv avec des pandas
Conseils à connaître lors de la programmation de compétitions avec Python2 (bibliothèque utile)
Conseils à savoir lors de la programmation de la compétition avec Python2 (Autres spécifications du langage)
Grattage WEB avec Python (pour mémo personnel)
Extrait de code pour une recherche de bits complète avec python
Remarques lors de la création d'un environnement avec python
Conseils pour gérer les binaires en Python
Points à noter lors de la résolution de problèmes DP avec Python
Remarques sur la réalisation de l'OCR japonais avec Python
Meilleures pratiques personnelles lors de la mise au point avec Chainer
Conseils (entrée / sortie) à connaître lors de la programmation de compétitions avec Python2
Conseils personnels sur Python (chaînes, autour des journaux)
[Note personnelle] Scraping de pages Web en python3
Conseils pour utiliser python + caffe avec TSUBAME
1. Statistiques apprises avec Python 1-3. Calcul de diverses statistiques (statistiques)
Conseils (structure de contrôle) à connaître lors de la programmation de la compétition avec Python2
Astuces Python
Astuces Python
Conseils (structure de données) à connaître lors de la programmation de compétitions avec Python2
Trois choses auxquelles j'étais accro lors de l'utilisation de Python et MySQL avec Docker
[Astuces] Écriture facile à lire lors de la connexion de fonctions en Python
Erreur lors de l'installation d'un module avec Python pip
[Personal memo] julia --Utiliser la bibliothèque Python avec Julia en utilisant PyCall
Apprentissage automatique à partir de Python Personal Memorandum Part2
Environnement et utilisation recommandés lors du développement avec Python
Apprentissage automatique à partir de Python Personal Memorandum Part1
[Diverses analyses d'images avec plotly] Visualisation dynamique avec plotly [python, image]
Précautions lors du traitement des structures de contrôle dans Python 2.6
~ Conseils pour les débutants de Python donnés avec amour par Pythonista ① ~
1. Statistiques apprises avec Python 1-2. Calcul de diverses statistiques (Numpy)
Enquête lorsque l'importation ne peut pas être effectuée avec python
Utilisez diverses fonctionnalités de rabbimq avec python pika
Un mémo lors de la création d'un environnement python avec miniconda
Encodage de caractères lors du traitement de fichiers en Python 3
[python] [vscode] Lorsque vous vous fâchez avec space-tab-mixed
Formules qui apparaissent dans Faire des mathématiques avec Python
~ Conseils pour les débutants de Python donnés avec amour par Pythonista ② ~
[Développement Web avec Python] Précautions lors de l'enregistrement des cookies
Matériel à lire lors de la mise en route de Python
Qu'utilisez-vous lorsque vous testez avec Python?
[Python] Personnalisez la palette de couleurs lors du dessin de graphiques avec matplotlib
Conseils Python Conda
Statistiques avec python
Conseils personnels de Django
Python avec Go
Conseils de débogage Python
Twilio avec Python