les bases des pandas
Pandas est un package d'analyse de données basé sur Numpy qui contient des structures de données et des outils plus avancés
Semblable à Numpy, dont le cœur est ndarray, pandas s'articule également autour des deux structures de données principales de Series et DataFrame. . Series et DataFrame correspondent respectivement à une séquence unidimensionnelle et à une structure de table bidimensionnelle. La méthode d'importation conventionnelle des pandas est la suivante :
from pandas import Series,DataFrame import pandas as pd
Séries
Les séries peuvent être considérées comme un dictionnaire ordonné de longueur fixe. Fondamentalement, n'importe quelle donnée unidimensionnelle peut être utilisée pour construire des objets Series :
>>> s = Series([1,2,3.0,'abc']) >>> s 0 1 1 2 2 3 3 abc dtype: object
Bien que dtype:object
puisse contenir une variété de types de données de base, cela semble toujours affecter les performances, il est donc préférable de le conserver type simple.
L'objet Series contient deux attributs principaux : l'index et les valeurs, qui sont les colonnes de gauche et de droite dans l'exemple ci-dessus. Étant donné que ce qui est transmis au constructeur est une liste, la valeur de l'index est un entier qui augmente à partir de 0. Si une structure de paire clé-valeur de type dictionnaire est transmise, une série correspondant à la valeur de l'index sera générée ou dans ; l'initialisation Lors de l'utilisation de paramètres mot-clés pour spécifier explicitement un objet index :
>>> s = Series(data=[1,3,5,7],index = ['a','b','x','y']) >>> s a 1 b 3 x 5 y 7 dtype: int64 >>> s.index Index(['a', 'b', 'x', 'y'], dtype='object') >>> s.values array([1, 3, 5, 7], dtype=int64)
Les éléments de l'objet Series seront construits strictement selon l'index donné, ce qui signifie : si le paramètre data a une valeur-clé paire, alors seule la clé contenue dans l'index sera utilisée et si la clé correspondante est manquante dans les données, la clé sera ajoutée même si une valeur NaN est donnée.
Notez que bien qu'il existe une correspondance entre l'index de la série et les éléments de valeurs, celle-ci est différente du mappage du dictionnaire. L'index et les valeurs sont en fait toujours des tableaux ndarray indépendants, donc les performances des objets Series sont tout à fait correctes. Le plus grand avantage des
Series, une structure de données qui utilise des paires clé-valeur, est que lorsque des opérations arithmétiques sont effectuées entre les séries, les index seront automatiquement alignés.
De plus, l'objet Series et son index contiennent tous deux un attribut name
:
>>> s.name = 'a_series' >>> s.index.name = 'the_index' >>> s the_index a 1 b 3 x 5 y 7 Name: a_series, dtype: int64
DataFrame
DataFrame est a Une structure de données tabulaire qui contient un ensemble de colonnes ordonnées (similaire à un index), et chaque colonne peut être d'un type de valeur différent (contrairement à ndarray, qui ne peut avoir qu'un seul type). Fondamentalement, vous pouvez considérer un DataFrame comme une collection de séries partageant le même index.
La méthode de construction de DataFrame est similaire à Series, sauf qu'elle peut accepter plusieurs sources de données unidimensionnelles en même temps, dont chacune deviendra une colonne distincte :
>>> data = {'state':['Ohino','Ohino','Ohino','Nevada','Nevada'], 'year':[2000,2001,2002,2001,2002], 'pop':[1.5,1.7,3.6,2.4,2.9]} >>> df = DataFrame(data) >>> df pop state year 0 1.5 Ohino 2000 1 1.7 Ohino 2001 2 3.6 Ohino 2002 3 2.4 Nevada 2001 4 2.9 Nevada 2002 [5 rows x 3 columns]
Bien que le paramètre data ressemble à un dictionnaire, la clé du dictionnaire ne joue pas le rôle d'index du DataFrame, mais d'attribut "name" de la série. L'index généré ici est toujours "01234".
Les paramètres du constructeur DataFrame les plus complets sont : DataFrame(data=None,index=None,coloumns=None)
, les colonnes sont "nom" :
>>> df = DataFrame(data,index=['one','two','three','four','five'], columns=['year','state','pop','debt']) >>> df year state pop debt one 2000 Ohino 1.5 NaN two 2001 Ohino 1.7 NaN three 2002 Ohino 3.6 NaN four 2001 Nevada 2.4 NaN five 2002 Nevada 2.9 NaN [5 rows x 4 columns]
De même, les valeurs manquantes sont remplies avec NaN. Jetez un œil aux index, aux colonnes et aux types d'index :
>>> df.index Index(['one', 'two', 'three', 'four', 'five'], dtype='object') >>> df.columns Index(['year', 'state', 'pop', 'debt'], dtype='object') >>> type(df['debt']) <class 'pandas.core.series.Series'>
Les opérations DataFrame orientées ligne et colonne sont fondamentalement équilibrées et toute colonne extraite est une série.
Propriétés des objets
Réindexation
La réindexation des objets Series est implémentée via sa méthode .reindex(index=None,**kwargs)
. Il y a deux paramètres couramment utilisés dans **kwargs
: method=None,fill_value=np.NaN
:
ser = Series([4.5,7.2,-5.3,3.6],index=['d','b','a','c']) >>> a = ['a','b','c','d','e'] >>> ser.reindex(a) a -5.3 b 7.2 c 3.6 d 4.5 e NaN dtype: float64 >>> ser.reindex(a,fill_value=0) a -5.3 b 7.2 c 3.6 d 4.5 e 0.0 dtype: float64 >>> ser.reindex(a,method='ffill') a -5.3 b 7.2 c 3.6 d 4.5 e 4.5 dtype: float64 >>> ser.reindex(a,fill_value=0,method='ffill') a -5.3 b 7.2 c 3.6 d 4.5 e 4.5 dtype: float64
.reindex()
La méthode renverra un nouvel objet dont l'index suit strictement les paramètres donnés. Le paramètre method:{'backfill', 'bfill', 'pad', 'ffill', None}
est utilisé pour. spécifiez le mode d'interpolation (Fill), lorsqu'il n'est pas indiqué, se remplit automatiquement avec fill_value
, la valeur par défaut est NaN (ffill = pad, bfill = back fill, fait respectivement référence à la valeur avant ou arrière pendant l'interpolation)
DataFrame La méthode de réindexation d'un objet est : .reindex(index=None,columns=None,**kwargs)
. Il n'y a qu'un seul paramètre de colonnes facultatif de plus que Series, qui est utilisé pour indexer les colonnes. L'utilisation est similaire à l'exemple ci-dessus, sauf que le paramètre de méthode d'interpolation method
ne peut être appliqué qu'aux lignes, c'est-à-dire à l'axe 0.
>>> state = ['Texas','Utha','California'] >>> df.reindex(columns=state,method='ffill') Texas Utha California a 1 NaN 2 c 4 NaN 5 d 7 NaN 8 [3 rows x 3 columns] >>> df.reindex(index=['a','b','c','d'],columns=state,method='ffill') Texas Utha California a 1 NaN 2 b 1 NaN 2 c 4 NaN 5 d 7 NaN 8 [4 rows x 3 columns]
Cependant fill_value
est toujours valable. Les amis intelligents se sont peut-être déjà demandé si l'interpolation sur les colonnes pouvait être réalisée via df.T.reindex(index,method='**').T
. Notez également que lors de l'utilisation de reindex(index,method='**')
, l'index doit être monotone, sinon il déclenchera un ValueError: Must be monotonic for forward fill
. Par exemple, le dernier appel de l'exemple ci-dessus ne fonctionnera pas si index=['a','b','d','c']
est utilisé.
Supprimer des éléments sur l'axe spécifié
signifie supprimer un élément d'une Series ou une ligne (colonne) d'un DataFrame, via la méthode .drop(labels, axis=0)
de l'objet :
>>> ser d 4.5 b 7.2 a -5.3 c 3.6 dtype: float64 >>> df Ohio Texas California a 0 1 2 c 3 4 5 d 6 7 8 [3 rows x 3 columns] >>> ser.drop('c') d 4.5 b 7.2 a -5.3 dtype: float64 >>> df.drop('a') Ohio Texas California c 3 4 5 d 6 7 8 [2 rows x 3 columns] >>> df.drop(['Ohio','Texas'],axis=1) California a 2 c 5 d 8 [3 rows x 1 columns]
.drop()
Ce qui est renvoyé est un nouvel objet, et le méta-objet ne sera pas modifié.
Indexation et découpage
Tout comme Numpy, pandas prend également en charge l'indexation et le découpage obj[::]
et le filtrage via des tableaux booléens.
Cependant, il convient de noter que, comme l'index d'un objet pandas n'est pas limité aux entiers, lors de l'utilisation d'un nombre non entier comme index de tranche, il est inclus en terminal.
>>> foo a 4.5 b 7.2 c -5.3 d 3.6 dtype: float64 >>> bar 0 4.5 1 7.2 2 -5.3 3 3.6 dtype: float64 >>> foo[:2] a 4.5 b 7.2 dtype: float64 >>> bar[:2] 0 4.5 1 7.2 dtype: float64 >>> foo[:'c'] a 4.5 b 7.2 c -5.3 dtype: float64
这里 foo 和 bar 只有 index 不同——bar 的 index 是整数序列。可见当使用整数索引切片时,结果与 Python 列表或 Numpy 的默认状况相同;换成 'c'
这样的字符串索引时,结果就包含了这个边界元素。
另外一个特别之处在于 DataFrame 对象的索引方式,因为他有两个轴向(双重索引)。
可以这么理解:DataFrame 对象的标准切片语法为:.ix[::,::]
。ix 对象可以接受两套切片,分别为行(axis=0)和列(axis=1)的方向:
>>> df Ohio Texas California a 0 1 2 c 3 4 5 d 6 7 8 [3 rows x 3 columns] >>> df.ix[:2,:2] Ohio Texas a 0 1 c 3 4 [2 rows x 2 columns] >>> df.ix['a','Ohio'] 0
而不使用 ix ,直接切的情况就特殊了:
索引时,选取的是列
切片时,选取的是行
这看起来有点不合逻辑,但作者解释说 “这种语法设定来源于实践”,我们信他。
>>> df['Ohio'] a 0 c 3 d 6 Name: Ohio, dtype: int32 >>> df[:'c'] Ohio Texas California a 0 1 2 c 3 4 5 [2 rows x 3 columns] >>> df[:2] Ohio Texas California a 0 1 2 c 3 4 5 [2 rows x 3 columns]
使用布尔型数组的情况,注意行与列的不同切法(列切法的 :
不能省):
>>> df['Texas']>=4 a False c True d True Name: Texas, dtype: bool >>> df[df['Texas']>=4] Ohio Texas California c 3 4 5 d 6 7 8 [2 rows x 3 columns] >>> df.ix[:,df.ix['c']>=4] Texas California a 1 2 c 4 5 d 7 8 [3 rows x 2 columns]
算术运算和数据对齐
pandas 最重要的一个功能是,它可以对不同索引的对象进行算术运算。在将对象相加时,结果的索引取索引对的并集。自动的数据对齐在不重叠的索引处引入空值,默认为 NaN。
>>> foo = Series({'a':1,'b':2}) >>> foo a 1 b 2 dtype: int64 >>> bar = Series({'b':3,'d':4}) >>> bar b 3 d 4 dtype: int64 >>> foo + bar a NaN b 5 d NaN dtype: float64
DataFrame 的对齐操作会同时发生在行和列上。
当不希望在运算结果中出现 NA 值时,可以使用前面 reindex 中提到过 fill_value
参数,不过为了传递这个参数,就需要使用对象的方法,而不是操作符:df1.add(df2,fill_value=0)
。其他算术方法还有:sub(), div(), mul()
。
Series 和 DataFrame 之间的算术运算涉及广播,暂时先不讲。
函数应用和映射
Numpy 的 ufuncs(元素级数组方法)也可用于操作 pandas 对象。
当希望将函数应用到 DataFrame 对象的某一行或列时,可以使用 .apply(func, axis=0, args=(), **kwds)
方法。
f = lambda x:x.max()-x.min() >>> df Ohio Texas California a 0 1 2 c 3 4 5 d 6 7 8 [3 rows x 3 columns] >>> df.apply(f) Ohio 6 Texas 6 California 6 dtype: int64 >>> df.apply(f,axis=1) a 2 c 2 d 2 dtype: int64
排序和排名
Series 的 sort_index(ascending=True)
方法可以对 index 进行排序操作,ascending 参数用于控制升序或降序,默认为升序。
若要按值对 Series 进行排序,当使用 .order()
方法,任何缺失值默认都会被放到 Series 的末尾。
在 DataFrame 上,.sort_index(axis=0, by=None, ascending=True)
方法多了一个轴向的选择参数与一个 by 参数,by 参数的作用是针对某一(些)列进行排序(不能对行使用 by 参数):
>>> df.sort_index(by='Ohio') Ohio Texas California a 0 1 2 c 3 4 5 d 6 7 8 [3 rows x 3 columns] >>> df.sort_index(by=['California','Texas']) Ohio Texas California a 0 1 2 c 3 4 5 d 6 7 8 [3 rows x 3 columns] >>> df.sort_index(axis=1) California Ohio Texas a 2 0 1 c 5 3 4 d 8 6 7 [3 rows x 3 columns]
排名(Series.rank(method='average', ascending=True)
)的作用与排序的不同之处在于,他会把对象的 values 替换成名次(从 1 到 n)。这时唯一的问题在于如何处理平级项,方法里的 method
参数就是起这个作用的,他有四个值可选:average, min, max, first
。
>>> ser=Series([3,2,0,3],index=list('abcd')) >>> ser a 3 b 2 c 0 d 3 dtype: int64 >>> ser.rank() a 3.5 b 2.0 c 1.0 d 3.5 dtype: float64 >>> ser.rank(method='min') a 3 b 2 c 1 d 3 dtype: float64 >>> ser.rank(method='max') a 4 b 2 c 1 d 4 dtype: float64 >>> ser.rank(method='first') a 3 b 2 c 1 d 4 dtype: float64
注意在 ser[0]=ser[3] 这对平级项上,不同 method 参数表现出的不同名次。
DataFrame 的 .rank(axis=0, method='average', ascending=True)
方法多了个 axis 参数,可选择按行或列分别进行排名,暂时好像没有针对全部元素的排名方法。
统计方法
pandas 对象有一些统计方法。它们大部分都属于约简和汇总统计,用于从 Series 中提取单个值,或从 DataFrame 的行或列中提取一个 Series。
比如 DataFrame.mean(axis=0,skipna=True)
方法,当数据集中存在 NA 值时,这些值会被简单跳过,除非整个切片(行或列)全是 NA,如果不想这样,则可以通过 skipna=False
来禁用此功能:
>>> df one two a 1.40 NaN b 7.10 -4.5 c NaN NaN d 0.75 -1.3 [4 rows x 2 columns] >>> df.mean() one 3.083333 two -2.900000 dtype: float64 >>> df.mean(axis=1) a 1.400 b 1.300 c NaN d -0.275 dtype: float64 >>> df.mean(axis=1,skipna=False) a NaN b 1.300 c NaN d -0.275 dtype: float64
其他常用的统计方法有:
######################## | ****************************************** |
count | 非 NA 值的数量 |
describe | 针对 Series 或 DF 的列计算汇总统计 |
min , max | 最小值和最大值 |
argmin , argmax | 最小值和最大值的索引位置(整数) |
idxmin , idxmax | 最小值和最大值的索引值 |
quantile | 样本分位数(0 到 1) |
sum | 求和 |
mean | 均值 |
median | 中位数 |
mad | 根据均值计算平均绝对离差 |
var | 方差 |
std | 标准差 |
skew | 样本值的偏度(三阶矩) |
kurt | 样本值的峰度(四阶矩) |
cumsum | 样本值的累计和 |
cummin , cummax | 样本值的累计最大值和累计最小值 |
cumprod | 样本值的累计积 |
diff | 计算一阶差分(对时间序列很有用) |
pct_change | 计算百分数变化 |
Gestion des données manquantes
L'expression principale de NA dans les pandas est np.nan De plus, None intégré à Python sera également traité comme NA. .
Il existe quatre façons de gérer NA : dropna , fillna , isnull , notnull
.
is(not)null
Cette paire de méthodes effectue des applications au niveau des éléments sur l'objet, puis renvoie un tableau booléen, qui peut généralement être utilisé pour l'indexation booléenne.
dropna
Pour une série, dropna renvoie une série contenant uniquement des données non vides et des valeurs d'index.
Le problème réside dans la façon dont DataFrame est traité, car une fois supprimé, au moins une ligne (colonne) doit être perdue. La solution ici est similaire à la précédente, mais elle passe toujours un paramètre supplémentaire : dropna(axis=0, how='any', thresh=None)
La valeur facultative du paramètre how est any ou all. all supprime la ligne (colonne) uniquement si tous les éléments de tranche sont NA. Un autre paramètre intéressant est le seuil, qui est de type entier. Sa fonction est que, par exemple, seuil=3, il sera conservé lorsqu'il y aura au moins 3 valeurs non NA d'affilée. En plus du type de base, le paramètre value dans
fillna
fillna(value=None, method=None, axis=0)
peut également utiliser un dictionnaire, afin que différentes colonnes puissent être remplies avec différentes valeurs. L’utilisation de la méthode est la même que celle de la méthode .reindex()
précédente, je n’entrerai donc pas dans les détails ici.
paramètre inplace
Il y a un point que je n'ai pas mentionné auparavant, mais après avoir écrit l'exemple complet, j'ai trouvé que c'est assez important. Parmi les méthodes des objets Series et DataFrame, celles qui modifient le tableau et renvoient un nouveau tableau ont souvent un paramètre facultatif de replace=False
. S'il est défini manuellement sur True, le tableau d'origine peut être remplacé.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds





Tutoriel d'installation de Pandas : analyse des erreurs d'installation courantes et de leurs solutions, des exemples de code spécifiques sont requis Introduction : Pandas est un puissant outil d'analyse de données largement utilisé dans le nettoyage des données, le traitement des données et la visualisation des données, il est donc très respecté dans le domaine de la science des données. Cependant, en raison de problèmes de configuration de l'environnement et de dépendances, vous pouvez rencontrer des difficultés et des erreurs lors de l'installation de pandas. Cet article vous fournira un didacticiel d'installation de pandas et analysera certaines erreurs d'installation courantes et leurs solutions. 1. Installez les pandas

Comment utiliser pandas pour lire correctement les fichiers txt nécessite des exemples de code spécifiques. Pandas est une bibliothèque d'analyse de données Python largement utilisée. Elle peut être utilisée pour traiter une variété de types de données, notamment des fichiers CSV, des fichiers Excel, des bases de données SQL, etc. En même temps, il peut également être utilisé pour lire des fichiers texte, tels que des fichiers txt. Cependant, lors de la lecture de fichiers txt, nous rencontrons parfois quelques problèmes, comme des problèmes d'encodage, des problèmes de délimiteur, etc. Cet article explique comment lire correctement le txt à l'aide de pandas.

Pandas est un puissant outil d'analyse de données qui peut facilement lire et traiter différents types de fichiers de données. Parmi eux, les fichiers CSV sont l’un des formats de fichiers de données les plus courants et les plus utilisés. Cet article expliquera comment utiliser Pandas pour lire des fichiers CSV et effectuer une analyse de données, et fournira des exemples de code spécifiques. 1. Importez les bibliothèques nécessaires Tout d'abord, nous devons importer la bibliothèque Pandas et les autres bibliothèques associées qui peuvent être nécessaires, comme indiqué ci-dessous : importpandasaspd 2. Lisez le fichier CSV à l'aide de Pan

Python peut installer des pandas en utilisant pip, en utilisant conda, à partir du code source et en utilisant l'outil de gestion de packages intégré IDE. Introduction détaillée : 1. Utilisez pip et exécutez la commande pip install pandas dans le terminal ou l'invite de commande pour installer pandas ; 2. Utilisez conda et exécutez la commande conda install pandas dans le terminal ou l'invite de commande pour installer pandas ; installation et plus encore.

Étapes pour installer pandas en python : 1. Ouvrez le terminal ou l'invite de commande ; 2. Entrez la commande "pip install pandas" pour installer la bibliothèque pandas ; 3. Attendez la fin de l'installation et vous pourrez importer et utiliser la bibliothèque pandas. dans le script Python ; 4. Utiliser Il s'agit d'un environnement virtuel spécifique. Assurez-vous d'activer l'environnement virtuel correspondant avant d'installer pandas ; 5. Si vous utilisez un environnement de développement intégré, vous pouvez ajouter le code « importer des pandas en tant que pd » ; importez la bibliothèque pandas.

Outil de traitement des données : Pandas lit les données dans les bases de données SQL et nécessite des exemples de code spécifiques. À mesure que la quantité de données continue de croître et que leur complexité augmente, le traitement des données est devenu une partie importante de la société moderne. Dans le processus de traitement des données, Pandas est devenu l'un des outils préférés de nombreux analystes de données et scientifiques. Cet article explique comment utiliser la bibliothèque Pandas pour lire les données d'une base de données SQL et fournit des exemples de code spécifiques. Pandas est un puissant outil de traitement et d'analyse de données basé sur Python

Conseils pratiques pour lire les fichiers txt à l'aide de pandas, des exemples de code spécifiques sont requis Dans l'analyse et le traitement des données, les fichiers txt sont un format de données courant. L'utilisation de pandas pour lire les fichiers txt permet un traitement des données rapide et pratique. Cet article présentera plusieurs techniques pratiques pour vous aider à mieux utiliser les pandas pour lire les fichiers txt, ainsi que des exemples de code spécifiques. Lire des fichiers txt avec des délimiteurs Lorsque vous utilisez pandas pour lire des fichiers txt avec des délimiteurs, vous pouvez utiliser read_c

Le secret de la méthode de déduplication Pandas : un moyen rapide et efficace de dédupliquer les données, qui nécessite des exemples de code spécifiques. Dans le processus d'analyse et de traitement des données, une duplication des données est souvent rencontrée. Les données en double peuvent induire en erreur les résultats de l'analyse, la déduplication est donc une étape très importante. Pandas, une puissante bibliothèque de traitement de données, fournit une variété de méthodes pour réaliser la déduplication des données. Cet article présentera certaines méthodes de déduplication couramment utilisées et joindra des exemples de code spécifiques. Le cas le plus courant de déduplication basée sur une seule colonne dépend de la duplication ou non de la valeur d'une certaine colonne.
