pandas est une bibliothèque qui fournit des fonctions pour prendre en charge l'analyse des données dans le langage de programmation Python. En particulier, il fournit des structures de données et des opérations pour manipuler des tableaux numériques et des données chronologiques. Le développeur Wes McKinney veut un outil puissant et flexible pour l'analyse quantitative des données financières, et AQR Capital Management a commencé à développer des pandas en 2008. Avant de quitter AQR, il a persuadé son patron d'ouvrir la bibliothèque au public.
--Série unidimensionnelle
import numpy as np
import pandas as pd
d = np.array([[1,2,3],[4,5,6],[7,8,9]])
df = pd.DataFrame(d,columns=['a','b','c'])
>>> df
a b c
0 1 2 3
1 4 5 6
2 7 8 9
Le nom de la ligne est df.index Le nom de la colonne est df.columns Peut être examiné à
df = pd.DataFrame({'a':[1,4,7],'b':[2,5,8]},'c':[3,6,9])
>>> df
a b c
0 1 2 3
1 4 5 6
2 7 8 9
#La première ligne est traitée comme un nom de colonne
# index_cols=0 :Spécifiez le numéro de colonne de la colonne que vous souhaitez utiliser comme index à partir de 0
import pandas as pd
df = pd.read_csv('data/src/sample_pandas_normal.csv', index_col=0)
print(df)
# age state point
# name
# Alice 24 NY 64
# Bob 42 CA 92
# Charlie 18 CA 70
# Dave 68 TX 70
# Ellen 24 CA 88
# Frank 30 NY 57
print(df.index.values)
# ['Alice' 'Bob' 'Charlie' 'Dave' 'Ellen' 'Frank']
print(df.columns.values)
# ['age' 'state' 'point']
Sans ** index_cols = 0 **, la colonne d'index ne sera pas reconnue.
df_header_index = pd.read_csv('data/src/sample_header_index.csv')
print(df_header_index)
# Unnamed: 0 a b c d
# 0 ONE 11 12 13 14
# 1 TWO 21 22 23 24
# 2 THREE 31 32 33 34
# ========================================================== #
df_header_index_col = pd.read_csv('data/src/sample_header_index.csv', index_col=0)
print(df_header_index_col)
# a b c d
# ONE 11 12 13 14
# TWO 21 22 23 24
# THREE 31 32 33 34
print(df_header_index_col.index)
# Index(['ONE', 'TWO', 'THREE'], dtype='object')
Dans le cas de csv sans en-tête, si pd.read_csv est utilisé tel quel, la première ligne sera des colonnes. Si ** header = None **, les numéros de série seront attribués aux colonnes de nom de colonne. Vous pouvez également définir les noms de colonne comme ** names = ('A', 'B', 'C', 'D') **.
11,12,13,14
21,22,23,24
31,32,33,34
import pandas as pd
df = pd.read_csv('data/src/sample.csv')
print(df)
# 11 12 13 14
# 0 21 22 23 24
# 1 31 32 33 34
print(df.columns)
# Index(['11', '12', '13', '14'], dtype='object')
# ========================================================== #
df_none = pd.read_csv('data/src/sample.csv', header=None)
print(df_none)
# 0 1 2 3
# 0 11 12 13 14
# 1 21 22 23 24
# 2 31 32 33 34
# ========================================================== #
df_names = pd.read_csv('data/src/sample.csv', names=('A', 'B', 'C', 'D'))
print(df_names)
# A B C D
# 0 11 12 13 14
# 1 21 22 23 24
# 2 31 32 33 34
df_none_usecols = pd.read_csv('data/src/sample.csv', header=None, usecols=[1, 3])
print(df_none_usecols)
# 1 3
# 0 12 14
# 1 22 24
# 2 32 34
# ========================================================== #
df_header_usecols = pd.read_csv('data/src/sample_header.csv',
usecols=lambda x: x is not 'b')
print(df_header_usecols)
# a c d
# 0 11 13 14
# 1 21 23 24
# 2 31 33 34
# ========================================================== #
df_index_usecols = pd.read_csv('data/src/sample_header_index.csv',
index_col=0, usecols=[0, 1, 3])
print(df_index_usecols)
# a c
# ONE 11 13
# TWO 21 23
# THREE 31 33
Si vous passez un entier à skiprows, ** ignorez le début du fichier du nombre de lignes ** et lisez-le.
df_none = pd.read_csv('data/src/sample.csv', header=None)
print(df_none)
# 0 1 2 3
# 0 11 12 13 14
# 1 21 22 23 24
# 2 31 32 33 34
# ========================================================== #
df_none = pd.read_csv('data/src/sample.csv', header=None, skiprows=2)
print(df_none)
# 0 1 2 3
# 0 31 32 33 34
# ========================================================== #
df_none_skiprows = pd.read_csv('data/src/sample.csv', header=None, skiprows=[1])
print(df_none_skiprows)
# 0 1 2 3
# 0 11 12 13 14
# 1 31 32 33 34
# ========================================================== #
#Si vous souhaitez ignorer la dernière ligne, cliquez sur "Ignorer le pied de page"=Définir sur "1"
# engine='python'Un avertissement peut se produire s'il n'est pas spécifié.
df_none_skipfooter = pd.read_csv('data/src/sample.csv', header=None,
skipfooter=1, engine='python')
print(df_none_skipfooter)
# 0 1 2 3
# 0 11 12 13 14
# 1 21 22 23 24
df_none_nrows = pd.read_csv('data/src/sample.csv', header=None, nrows=2)
print(df_none_nrows)
# 0 1 2 3
# 0 11 12 13 14
# 1 21 22 23 24
df_str_col = pd.read_csv('data/src/sample_header_index_dtype.csv',
index_col=0, dtype={'b': str, 'c': str})
print(df_str_col)
# a b c d
# ONE 1 001 100 x
# TWO 2 020 NaN y
# THREE 3 300 300 z
print(df_str_col.dtypes)
# a int64
# b object
# c object
# d object
# dtype: object
# ========================================================== #
#Les colonnes DataFrame peuvent être converties en type avec "as type"
print(df['s_i'].astype(int))
# 0 0
# 1 10
# 2 200
# Name: s_i, dtype: int64
By default the following values are interpreted as NaN: ‘’, ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1.#IND’, ‘-1.#QNAN’, ‘-NaN’, ‘-nan’, ‘1.#IND’, ‘1.#QNAN’, ‘N/A’, ‘NA’, ‘NULL’, ‘NaN’, ‘n/a’, ‘nan’, ‘null’. pandas.read_csv — pandas 0.23.0 documentation
df_nan = pd.read_csv('data/src/sample_header_index_nan.csv', index_col=0)
print(df_nan)
# a b
# ONE NaN NaN
# TWO - NaN
# THREE NaN NaN
# ========================================================== #
df_nan_set_na = pd.read_csv('data/src/sample_header_index_nan.csv',
index_col=0, na_values='-')
print(df_nan_set_na)
# a b
# ONE NaN NaN
# TWO NaN NaN
# THREE NaN NaN
,a,b
ONE,,NaN
TWO,-,nan
THREE,null,N/A
# ========================================================== #
df_nan_set_na_no_keep = pd.read_csv('data/src/sample_header_index_nan.csv',
index_col=0, na_values=['-', 'NaN', 'null'],
keep_default_na=False)
print(df_nan_set_na_no_keep)
# a b
# ONE NaN
# TWO NaN nan
# THREE NaN N/A
,a,b
ONE,,NaN
TWO,-,nan
THREE,null,N/A
# ========================================================== #
df_nan_no_filter = pd.read_csv('data/src/sample_header_index_nan.csv',
index_col=0, na_filter=False)
print(df_nan_no_filter)
# a b
# ONE NaN
# TWO - nan
# THREE null N/A
df_sjis = pd.read_csv('data/src/sample_header_shift_jis.csv',
encoding='shift_jis')
print(df_sjis)
# a b c d
#0 A 12 13 14
#1 22 23 24
#2 32 33 34
Si l'extension est .gz, .bz2, .zip, .xz, elle sera détectée et développée automatiquement. Si les extensions sont différentes, spécifiez explicitement les chaînes «gz», «bz2», «zip» et «xz» dans l'argument compression. De plus, il n'est pris en charge que lorsque le fichier csv seul est compressé. Une erreur se produit si plusieurs fichiers sont compressés. zip et xz sont pris en charge à partir de la version 0.18.1.
df_zip = pd.read_csv('data/src/sample_header.csv.zip')
df_web = pd.read_csv('http://www.post.japanpost.jp/zipcode/dl/oogaki/zip/13tokyo.zip',
header=None, encoding='shift_jis')
#direction horizontale(axis = 1)Pour créer une colonne appelée Total
df['Total'] = df.sum(axis=1)
at, iat: sélectionner, obtenir / modifier la valeur d'un seul élément loc, iloc: sélectionnez, obtenez / modifiez la valeur d'un seul élément ou de plusieurs éléments
count: nombre d'éléments unique: nombre d'éléments de valeur uniques (uniques) haut: valeur la plus fréquente (mode) freq: fréquence des valeurs les plus fréquentes (nombre d'occurrences) moyenne: moyenne arithmétique std: écart type min: valeur minimale max: valeur maximale 50%: médiane 25%, 75%: 1/4 minutes, 3/4 minutes
import pandas as pd
df = pd.DataFrame({'a': [1, 2, 1, 3],
'b': [0.4, 1.1, 0.1, 0.8],
'c': ['X', 'Y', 'X', 'Z'],
'd': ['3', '5', '2', '1'],
'e': [True, True, False, True]})
print(df)
# a b c d e
# 0 1 0.4 X 3 True
# 1 2 1.1 Y 5 True
# 2 1 0.1 X 2 False
# 3 3 0.8 Z 1 True
print(df.dtypes)
# a int64
# b float64
# c object
# d object
# e bool
# dtype: object
# ========================================================== #
##Afficher les statistiques récapitulatives pour le bloc de données df
#Moyenne, écart type, valeur maximale, valeur minimale, valeur la plus fréquente, etc. pour chaque colonne
print(df.describe())
# a b
# count 4.000000 4.000000
# mean 1.750000 0.600000
# std 0.957427 0.439697
# min 1.000000 0.100000
# 25% 1.000000 0.325000
# 50% 1.500000 0.600000
# 75% 2.250000 0.875000
# max 3.000000 1.100000
print(type(df.describe()))
# <class 'pandas.core.frame.DataFrame'>
print(df.describe().loc['std']) #std est l'écart type
# a 0.957427
# b 0.439697
# Name: std, dtype: float64
print(df.describe().at['std', 'b'])
# 0.439696865275764
** Si include = 'all', tous les types de colonnes seront inclus. ** **
print(df.describe(exclude='number'))
# c d e
# count 4 4 4
# unique 3 4 2
# top X 3 True
# freq 2 1 3
df.plot() #Graphique linéaire
df.plot.bar(stacked=True) #Graphique à barres empilées
df.plot.scatter(‘Japanese’,’English’) #Diagramme de dispersion en spécifiant des colonnes
df[‘Japanese’].plot.hist() #Schéma en spécifiant des colonnes
Recommended Posts