自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

你還在用Excel處理數(shù)據(jù)?Python Pandas讓你處理數(shù)據(jù)事半功倍!

開(kāi)發(fā) 后端
Pandas是Python中非常常用的數(shù)據(jù)處理工具,可以方便地進(jìn)行數(shù)據(jù)的讀取、清洗、轉(zhuǎn)換、分析和可視化等操作。本文介紹了Pandas的基本用法和常用函數(shù),以及一些高級(jí)技巧,希望能夠?qū)ψx者有所幫助。

簡(jiǎn)介

Pandas是一個(gè)用于數(shù)據(jù)分析和處理的Python庫(kù),它提供了高效的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)操作工具,可以處理多種類(lèi)型的數(shù)據(jù),包括時(shí)間序列、表格型數(shù)據(jù)和矩陣數(shù)據(jù)等。

Pandas的主要數(shù)據(jù)結(jié)構(gòu)是Series和DataFrame,Series是一維數(shù)組,DataFrame是二維表格型數(shù)據(jù)結(jié)構(gòu),類(lèi)似于Excel中的表格。Pandas還提供了一些常用的數(shù)據(jù)操作函數(shù),包括數(shù)據(jù)的讀取和寫(xiě)入、數(shù)據(jù)的切片和過(guò)濾、數(shù)據(jù)的合并和聚合等。

本文將深入介紹Pandas庫(kù)的使用,包括數(shù)據(jù)的讀取和寫(xiě)入、數(shù)據(jù)的索引和切片、數(shù)據(jù)的過(guò)濾和排序、數(shù)據(jù)的合并和聚合等常用操作。同時(shí),還將介紹一些不常用但是有用的Pandas函數(shù)和技巧。本文將提供完整的代碼示例,幫助讀者更好地理解和應(yīng)用Pandas庫(kù)。

安裝

在使用Pandas庫(kù)之前,需要先安裝它??梢允褂胮ip命令進(jìn)行安裝:

pip install pandas

數(shù)據(jù)的讀取和寫(xiě)入

Pandas提供了多種方式讀取和寫(xiě)入數(shù)據(jù),包括讀寫(xiě)CSV文件、Excel文件、SQL數(shù)據(jù)庫(kù)等。下面是一些常用的數(shù)據(jù)讀取和寫(xiě)入函數(shù)。

讀取CSV文件

Pandas提供了read_csv函數(shù)用于讀取CSV文件,該函數(shù)將CSV文件讀取為DataFrame格式的數(shù)據(jù)。

import pandas as pd

df = pd.read_csv('data.csv')
print(df)

read_csv函數(shù)的參數(shù)列表如下:

  • filepath_or_buffer:CSV文件路徑或URL地址。
  • sep:CSV文件的分隔符,默認(rèn)為逗號(hào)。
  • header:指定哪一行作為列名,默認(rèn)為0,即第一行。
  • index_col:指定哪一列作為行索引,默認(rèn)為None,即不使用行索引。
  • usecols:指定讀取哪些列,默認(rèn)為None,即讀取所有列。
  • dtype:指定每一列的數(shù)據(jù)類(lèi)型。
  • skiprows:指定跳過(guò)哪些行。
  • nrows:指定讀取的行數(shù)。
  • na_values:指定缺失值的表示方式。

寫(xiě)入CSV文件

Pandas提供了to_csv函數(shù)用于將數(shù)據(jù)寫(xiě)入CSV文件。

import pandas as pd

df = pd.DataFrame({'name':['Tom', 'Jack', 'Mary'], 'age':[18, 20, 22]})
df.to_csv('data.csv', index=False)

to_csv函數(shù)的參數(shù)列表如下:

  • path_or_buf:CSV文件路徑或文件對(duì)象。
  • sep:CSV文件的分隔符,默認(rèn)為逗號(hào)。
  • header:是否寫(xiě)入列名,默認(rèn)為T(mén)rue。
  • index:是否寫(xiě)入行索引,默認(rèn)為T(mén)rue。
  • mode:寫(xiě)入模式,如"w"表示覆蓋寫(xiě)入,"a"表示追加寫(xiě)入。
  • encoding:編碼方式,默認(rèn)為"utf-8"。
  • na_rep:缺失值的表示方式。

讀取Excel文件

Pandas提供了read_excel函數(shù)用于讀取Excel文件,該函數(shù)將Excel文件讀取為DataFrame格式的數(shù)據(jù)。

import pandas as pd

df = pd.read_excel('data.xlsx')
print(df)

read_excel函數(shù)的參數(shù)列表如下:

  • io:Excel文件路徑或URL地址。
  • sheet_name:指定讀取哪個(gè)Sheet,默認(rèn)為0,即第一個(gè)Sheet。
  • header:指定哪一行作為列名,默認(rèn)為0,即第一行。
  • index_col:指定哪一列作為行索引,默認(rèn)為None,即不使用行索引。
  • usecols:指定讀取哪些列,默認(rèn)為None,即讀取所有列。
  • dtype:指定每一列的數(shù)據(jù)類(lèi)型。
  • skiprows:指定跳過(guò)哪些行。
  • nrows:指定讀取的行數(shù)。
  • na_values:指定缺失值的表示方式。

寫(xiě)入Excel文件

Pandas提供了to_excel函數(shù)用于將數(shù)據(jù)寫(xiě)入Excel文件。

import pandas as pd

df = pd.DataFrame({'name':['Tom', 'Jack', 'Mary'], 'age':[18, 20, 22]})
df.to_excel('data.xlsx', index=False)

to_excel函數(shù)的參數(shù)列表如下:

  • excel_writer:Excel文件路徑或文件對(duì)象。
  • sheet_name:指定寫(xiě)入哪個(gè)Sheet,默認(rèn)為Sheet1。
  • header:是否寫(xiě)入列名,默認(rèn)為T(mén)rue。
  • index:是否寫(xiě)入行索引,默認(rèn)為T(mén)rue。
  • startrow:從哪一行開(kāi)始寫(xiě)入,默認(rèn)為0。
  • startcol:從哪一列開(kāi)始寫(xiě)入,默認(rèn)為0。
  • na_rep:缺失值的表示方式。

數(shù)據(jù)的索引和切片

Pandas提供了多種方式對(duì)數(shù)據(jù)進(jìn)行索引和切片,包括基于位置的索引和切片、基于標(biāo)簽的索引和切片、布爾索引和掩碼索引等。

基于位置的索引和切片

Pandas提供了類(lèi)似于Python列表的索引和切片方式,使用iloc屬性實(shí)現(xiàn)。

import pandas as pd

df = pd.DataFrame({'name':['Tom', 'Jack', 'Mary'], 'age':[18, 20, 22]})
print(df.iloc[1]) # 索引第二行
print(df.iloc[0:2]) # 切片前兩行
print(df.iloc[:, 0]) # 索引第一列
print(df.iloc[:, 0:2]) # 切片前兩列
print(df.iloc[1, 1]) # 索引第二行第二列

基于標(biāo)簽的索引和切片

Pandas提供了基于標(biāo)簽的索引和切片方式,使用loc屬性實(shí)現(xiàn)。

import pandas as pd

df = pd.DataFrame({'name':['Tom', 'Jack', 'Mary'], 'age':[18, 20, 22]})
df.set_index('name', inplace=True) # 將name列設(shè)置為行索引
print(df.loc['Jack']) # 索引Jack行
print(df.loc[['Tom', 'Mary']]) # 索引Tom和Mary行
print(df.loc[:, 'age']) # 索引age列
print(df.loc[:, ['age', 'gender']]) # 索引age和gender列
print(df.loc['Jack', 'age']) # 索引Jack行的age列

布爾索引和掩碼索引

Pandas提供了布爾索引和掩碼索引方式,可以根據(jù)指定的條件篩選數(shù)據(jù)。

import pandas as pd

df = pd.DataFrame({'name':['Tom', 'Jack', 'Mary'], 'age':[18, 20, 22]})
print(df[df['age']>20]) # 篩選年齡大于20的數(shù)據(jù)
print(df[(df['name']=='Tom') | (df['name']=='Mary')]) # 篩選名字為T(mén)om或Mary的數(shù)據(jù)

數(shù)據(jù)的過(guò)濾和排序

Pandas提供了多種方式對(duì)數(shù)據(jù)進(jìn)行過(guò)濾和排序,包括條件過(guò)濾、數(shù)值過(guò)濾、文本過(guò)濾和排序等。

條件過(guò)濾

Pandas提供了query函數(shù)和where函數(shù)用于條件過(guò)濾。

import pandas as pd

df = pd.DataFrame({'name':['Tom', 'Jack', 'Mary'], 'age':[18, 20, 22]})
print(df.query('age > 20')) # 篩選年齡大于20的數(shù)據(jù)
print(df.where(df['name']=='Tom')) # 篩選名字為T(mén)om的數(shù)據(jù)

數(shù)值過(guò)濾

Pandas提供了多種方式對(duì)數(shù)據(jù)進(jìn)行數(shù)值過(guò)濾,包括數(shù)值比較、數(shù)值范圍篩選和缺失值處理等。

import pandas as pd
import numpy as np

df = pd.DataFrame({'name':['Tom', 'Jack', 'Mary'], 'age':[18, np.nan, 22]})
print(df[df['age']>20]) # 篩選年齡大于20的數(shù)據(jù)
print(df[df['age'].between(18, 20)]) # 篩選年齡在18-20之間的數(shù)據(jù)
print(df.dropna()) # 刪除缺失值
print(df.fillna(0)) # 將缺失值填充為0

文本過(guò)濾

Pandas提供了str屬性用于文本過(guò)濾,可以根據(jù)指定的條件篩選包含特定字符的數(shù)據(jù)。

import pandas as pd

df = pd.DataFrame({'name':['Tom', 'Jack', 'Mary'], 'gender':['M', 'F', 'F']})
print(df[df['name'].str.contains('a')]) # 篩選名字中包含a的數(shù)據(jù)
print(df[df['gender'].isin(['M', 'F'])]) # 篩選性別為M或F的數(shù)據(jù)

排序

Pandas提供了sort_values函數(shù)用于對(duì)數(shù)據(jù)進(jìn)行排序,可以根據(jù)指定的列或行進(jìn)行排序。

import pandas as pd

df = pd.DataFrame({'name':['Tom', 'Jack', 'Mary'], 'age':[18, 20, 22]})
print(df.sort_values(by='age', ascending=False)) # 按年齡降序排序

sort_values函數(shù)的參數(shù)列表如下:

  • by:指定按哪一列排序。
  • axis:指定按哪一個(gè)維度排序,默認(rèn)為0,即按列排序。
  • ascending:指定是否升序排列,默認(rèn)為T(mén)rue。

數(shù)據(jù)的合并和聚合

Pandas提供了多種方式對(duì)數(shù)據(jù)進(jìn)行合并和聚合,包括表格拼接、數(shù)據(jù)合并和數(shù)據(jù)聚合等。

表格拼接

Pandas提供了concat函數(shù)用于對(duì)多個(gè)表格進(jìn)行拼接,可以按行或列拼接。

import pandas as pd

df1 = pd.DataFrame({'name':['Tom', 'Jack'], 'age':[18, 20]})
df2 = pd.DataFrame({'name':['Mary'], 'age':[22]})
print(pd.concat([df1, df2])) # 按行拼接
df3 = pd.DataFrame({'gender':['M', 'M', 'F']})
print(pd.concat([df1, df3], axis=1)) # 按列拼接

concat函數(shù)的參數(shù)列表如下:

  • objs:需要拼接的表格列表。
  • axis:指定按哪一個(gè)維度拼接,默認(rèn)為0,即按行拼接。
  • join:指定拼接方式,默認(rèn)為"outer",即保留所有數(shù)據(jù)。
  • keys:指定拼接后每個(gè)表格的標(biāo)識(shí)符。

數(shù)據(jù)合并

Pandas提供了merge函數(shù)用于對(duì)多個(gè)數(shù)據(jù)進(jìn)行合并,可以按指定的列進(jìn)行合并。

import pandas as pd

df1 = pd.DataFrame({'name':['Tom', 'Jack'], 'age':[18, 20], 'gender':['M', 'M']})
df2 = pd.DataFrame({'name':['Tom', 'Mary'], 'score':[80, 90]})
print(pd.merge(df1, df2, on='name')) # 按名字合并

merge函數(shù)的參數(shù)列表如下:

  • left:左側(cè)數(shù)據(jù)表。
  • right:右側(cè)數(shù)據(jù)表。
  • on:指定按哪一列進(jìn)行合并。
  • how:指定合并方式,如"inner"表示保留兩個(gè)表格中都有的數(shù)據(jù)。
  • suffixes:指定重復(fù)列名的后綴。

數(shù)據(jù)聚合

Pandas提供了groupby函數(shù)用于對(duì)數(shù)據(jù)進(jìn)行聚合操作,可以根據(jù)指定的列進(jìn)行分組。

import pandas as pd

df = pd.DataFrame({'name':['Tom', 'Jack', 'Mary', 'Tom'], 'age':[18, 20, 22, 24]})
print(df.groupby('name').mean()) # 按名字分組并計(jì)算平均值

groupby函數(shù)的參數(shù)列表如下:

  • by:指定按哪一列進(jìn)行分組。
  • axis:指定按哪一個(gè)維度分組,默認(rèn)為0,即按列分組。
  • as_index:指定是否以分組列作為行索引,默認(rèn)為T(mén)rue。
  • aggfunc:指定聚合函數(shù),默認(rèn)為"mean",即計(jì)算平均值。

其他技巧

除了上述介紹的常用操作和函數(shù)外,Pandas還提供了許多不常用但是有用的函數(shù)和技巧,下面介紹其中一些。

apply函數(shù)

apply函數(shù)可以對(duì)每一列或每一行應(yīng)用指定的函數(shù)。

import pandas as pd
import numpy as np

df = pd.DataFrame({'name':['Tom', 'Jack', 'Mary'], 'age':[18, 20, 22]})
print(df.apply(lambda x: x.max())) # 每列的最大值
print(df.apply(lambda x: np.mean(x), axis=1)) # 每行的平均值

pivot_table函數(shù)

pivot_table函數(shù)可以對(duì)數(shù)據(jù)進(jìn)行透視表操作,可以根據(jù)指定的列進(jìn)行分組和聚合。

import pandas as pd

df = pd.DataFrame({'name':['Tom', 'Jack', 'Mary', 'Tom'], 'age':[18, 20, 22, 24], 'score':[80, 90, 85, 95]})
print(df.pivot_table(values='score', index='name', aggfunc='mean')) # 按名字計(jì)算平均分?jǐn)?shù)

cut函數(shù)

cut函數(shù)可以將數(shù)據(jù)按指定的區(qū)間進(jìn)行分段。

import pandas as pd

df = pd.DataFrame({'score':[60, 70, 80, 90, 100]})
bins = [0, 60, 70, 80, 90, 100]
labels = ['F', 'D', 'C', 'B', 'A']
df['grade'] = pd.cut(df['score'], bins=bins, labels=labels)
print(df)

qcut函數(shù)

qcut函數(shù)可以將數(shù)據(jù)按指定的分位數(shù)進(jìn)行分段。

import pandas as pd

df = pd.DataFrame({'score':[60, 70, 80, 90, 100]})
df['grade'] = pd.qcut(df['score'], q=3, labels=['Low', 'Medium', 'High'])
print(df)

結(jié)論

Pandas是Python中非常常用的數(shù)據(jù)處理工具,可以方便地進(jìn)行數(shù)據(jù)的讀取、清洗、轉(zhuǎn)換、分析和可視化等操作。本文介紹了Pandas的基本用法和常用函數(shù),以及一些高級(jí)技巧,希望能夠?qū)ψx者有所幫助。

責(zé)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2024-05-20 09:31:53

PandasPython大數(shù)據(jù)集

2023-11-27 13:58:00

數(shù)據(jù)預(yù)處理數(shù)據(jù)標(biāo)準(zhǔn)化

2019-08-27 17:32:10

數(shù)據(jù)處理PandasPython

2020-10-29 06:02:44

PythonPandasExcel

2022-03-02 08:01:50

腳本數(shù)據(jù)集成

2012-07-19 10:03:32

2020-06-24 11:59:31

PythonPandas數(shù)據(jù)處理

2023-07-10 09:39:02

lambdaPython語(yǔ)言

2019-01-28 17:42:33

Python數(shù)據(jù)預(yù)處理數(shù)據(jù)標(biāo)準(zhǔn)化

2024-11-12 16:28:34

2018-11-19 15:06:23

Python庫(kù)算法

2024-01-12 07:32:35

數(shù)據(jù)科學(xué)Python庫(kù)項(xiàng)目

2020-03-04 14:05:35

戴爾

2023-05-08 08:49:32

JavaLambda表達(dá)式

2024-10-24 17:03:19

AWK數(shù)據(jù)處理

2021-08-12 08:00:00

Pandas數(shù)據(jù)分析SQL

2023-12-12 11:06:37

PythonPandas數(shù)據(jù)

2023-09-25 13:19:41

pandasPython

2017-02-13 12:20:13

大數(shù)據(jù)備份技術(shù)

2021-11-19 11:50:48

MyBatisforeachJava
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)