国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【100天精通Python】Day56:Python 數(shù)據(jù)分析_Pandas數(shù)據(jù)清洗和處理

這篇具有很好參考價(jià)值的文章主要介紹了【100天精通Python】Day56:Python 數(shù)據(jù)分析_Pandas數(shù)據(jù)清洗和處理。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

數(shù)據(jù)清洗和處理

1.處理缺失值

1.1 刪除缺失值:

1.2? 填充缺失值:

1.3 插值:

2 數(shù)據(jù)類型轉(zhuǎn)換

2.1 數(shù)據(jù)類型轉(zhuǎn)換

2.2 日期和時(shí)間的轉(zhuǎn)換:

2.3 分類數(shù)據(jù)的轉(zhuǎn)換:

2.4 自定義數(shù)據(jù)類型的轉(zhuǎn)換:

3 數(shù)據(jù)去重

4 數(shù)據(jù)合并和連接


數(shù)據(jù)清洗和處理

????????在數(shù)據(jù)清洗和處理方面,Pandas 提供了多種功能,包括處理缺失值、數(shù)據(jù)類型轉(zhuǎn)換、數(shù)據(jù)去重以及數(shù)據(jù)合并和連接。以下是這些功能的詳細(xì)描述和示例:

1.處理缺失值

在 Pandas 中處理缺失值有多種方法,包括刪除缺失值、填充缺失值和插值。

1.1 刪除缺失值:

????????刪除缺失值是最簡(jiǎn)單的方法,但有時(shí)會(huì)導(dǎo)致數(shù)據(jù)損失。您可以使用 dropna() 方法來(lái)刪除包含缺失值的行或列。

(1)刪除包含缺失值的行:

import pandas as pd

data = {'A': [1, 2, None, 4],
        'B': [5, None, 7, 8]}
df = pd.DataFrame(data)

# 刪除包含缺失值的行
df_cleaned = df.dropna()
print("刪除包含缺失值的行的結(jié)果:\n", df_cleaned)

(2)刪除包含缺失值的列:

# 刪除包含缺失值的列
df_cleaned_columns = df.dropna(axis=1)
print("刪除包含缺失值的列的結(jié)果:\n", df_cleaned_columns)

1.2? 填充缺失值:

????????填充缺失值是用特定值替代缺失值的方法。您可以使用 fillna() 方法來(lái)填充缺失值。

使用特定值填充缺失值:

# 使用特定值填充缺失值
df_filled = df.fillna(0)  # 用 0 填充缺失值
print("使用特定值填充缺失值的結(jié)果:\n", df_filled)

1.3 插值:

????????插值是一種基于數(shù)據(jù)的方法,根據(jù)已知數(shù)據(jù)點(diǎn)的值來(lái)估計(jì)缺失值。Pandas 提供了多種插值方法,如線性插值、多項(xiàng)式插值等。

(1) 線性插值:

線性插值使用已知數(shù)據(jù)點(diǎn)之間的線性關(guān)系來(lái)估計(jì)缺失值。這是一種簡(jiǎn)單而常見(jiàn)的插值方法。

import pandas as pd

data = {'A': [1, 2, None, 4],
        'B': [5, None, 7, 8]}
df = pd.DataFrame(data)

# 使用線性插值填充缺失值
df_interpolated = df.interpolate()
print("使用線性插值填充缺失值的結(jié)果:\n", df_interpolated)

?(2)?多項(xiàng)式插值:

多項(xiàng)式插值使用多項(xiàng)式函數(shù)來(lái)逼近已知數(shù)據(jù)點(diǎn),以估計(jì)缺失值。您可以指定多項(xiàng)式的階數(shù)。

# 使用多項(xiàng)式插值填充缺失值(階數(shù)為2)
df_poly_interpolated = df.interpolate(method='polynomial', order=2)
print("使用多項(xiàng)式插值填充缺失值的結(jié)果:\n", df_poly_interpolated)

(3) 時(shí)間序列插值:

對(duì)于時(shí)間序列數(shù)據(jù),可以使用時(shí)間相關(guān)的插值方法,例如時(shí)間線性插值。

# 創(chuàng)建一個(gè)帶有時(shí)間索引的示例 DataFrame
data = {'A': [1, 2, None, 4],
        'B': [5, None, 7, 8]}
dates = pd.date_range(start='2021-01-01', periods=len(data))
df_time_series = pd.DataFrame(data, index=dates)

# 使用時(shí)間線性插值填充缺失值
df_time_series_interpolated = df_time_series.interpolate(method='time')
print("使用時(shí)間線性插值填充缺失值的結(jié)果:\n", df_time_series_interpolated)

2 數(shù)據(jù)類型轉(zhuǎn)換

????????在 Pandas 中,數(shù)據(jù)類型轉(zhuǎn)換是將一列或多列的數(shù)據(jù)類型更改為其他數(shù)據(jù)類型的過(guò)程。數(shù)據(jù)類型的轉(zhuǎn)換可以幫助您適應(yīng)特定的分析需求或確保數(shù)據(jù)的一致性。以下是一些常見(jiàn)的數(shù)據(jù)類型轉(zhuǎn)換操作以及示例:

2.1 數(shù)據(jù)類型轉(zhuǎn)換

  • 使用 astype() 方法將一列的數(shù)據(jù)類型轉(zhuǎn)換為其他數(shù)據(jù)類型,如將整數(shù)列轉(zhuǎn)換為浮點(diǎn)數(shù)列。
  • 使用 pd.to_numeric() 將列轉(zhuǎn)換為數(shù)值類型,例如整數(shù)或浮點(diǎn)數(shù)。
import pandas as pd

# 創(chuàng)建示例 DataFrame
data = {'A': [1, 2, 3],
        'B': ['4', '5', '6']}
df = pd.DataFrame(data)

# 將列 'A' 從整數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)
df['A'] = df['A'].astype(float)

# 將列 'B' 從字符串轉(zhuǎn)換為整數(shù)
df['B'] = pd.to_numeric(df['B'])

print(df)

DataFrame 中的數(shù)據(jù)類型轉(zhuǎn)換:

df.astype(dtype, copy=True, errors='raise')
  • dtype: 要將數(shù)據(jù)類型轉(zhuǎn)換為的目標(biāo)數(shù)據(jù)類型??梢允?NumPy 的數(shù)據(jù)類型(如 np.float32)或 Python 數(shù)據(jù)類型(如 floatint)。
  • copy(可選,默認(rèn)為 True):指定是否返回副本(True)或修改原始 DataFrame(False)。
  • errors(可選,默認(rèn)為 'raise'):指定如何處理轉(zhuǎn)換錯(cuò)誤。如果為 'raise',則會(huì)引發(fā)異常;如果為 'coerce',則將無(wú)法轉(zhuǎn)換的值設(shè)置為 NaN。

?Series 中的數(shù)據(jù)類型轉(zhuǎn)換:

s.astype(dtype, copy=True, errors='raise')
import pandas as pd

# 創(chuàng)建一個(gè)示例 DataFrame
data = {'A': [1, 2, 3],
        'B': [4, 5, 6]}
df = pd.DataFrame(data)

# 將列 'A' 從整數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)
df['A'] = df['A'].astype(float)

# 將列 'B' 從整數(shù)轉(zhuǎn)換為字符串
df['B'] = df['B'].astype(str)

# 將列 'C' 從字符串轉(zhuǎn)換為整數(shù)并處理轉(zhuǎn)換錯(cuò)誤(設(shè)置無(wú)法轉(zhuǎn)換的值為 NaN)
df['C'] = pd.to_numeric(df['C'], errors='coerce').astype(int)

print(df.dtypes)

上述示例中,我們演示了如何使用 astype()pd.to_numeric() 進(jìn)行數(shù)據(jù)類型的轉(zhuǎn)換,包括整數(shù)轉(zhuǎn)浮點(diǎn)數(shù)、整數(shù)轉(zhuǎn)字符串以及字符串轉(zhuǎn)整數(shù)并處理轉(zhuǎn)換錯(cuò)誤的情況。?

2.2 日期和時(shí)間的轉(zhuǎn)換:

  • 使用 pd.to_datetime() 將列轉(zhuǎn)換為日期時(shí)間類型,以便進(jìn)行日期時(shí)間操作。
import pandas as pd

# 創(chuàng)建示例 DataFrame
data = {'Date': ['2021-01-01', '2021-01-02', '2021-01-03'],
        'Value': [10, 15, 20]}
df = pd.DataFrame(data)

# 將 'Date' 列從字符串轉(zhuǎn)換為日期時(shí)間類型
df['Date'] = pd.to_datetime(df['Date'])

print(df.dtypes)

2.3 分類數(shù)據(jù)的轉(zhuǎn)換:

  • 使用 astype('category') 將列轉(zhuǎn)換為分類數(shù)據(jù)類型,適用于有限的離散值。
import pandas as pd

# 創(chuàng)建示例 DataFrame
data = {'Category': ['A', 'B', 'A', 'C']}
df = pd.DataFrame(data)

# 將 'Category' 列轉(zhuǎn)換為分類數(shù)據(jù)類型
df['Category'] = df['Category'].astype('category')

print(df.dtypes)

2.4 自定義數(shù)據(jù)類型的轉(zhuǎn)換:

  • 您可以使用自定義函數(shù)來(lái)將數(shù)據(jù)轉(zhuǎn)換為所需的數(shù)據(jù)類型,例如使用 apply() 方法。
import pandas as pd

# 創(chuàng)建示例 DataFrame
data = {'Numbers': ['1', '2', '3', '4']}
df = pd.DataFrame(data)

# 自定義函數(shù)將字符串轉(zhuǎn)換為整數(shù)并應(yīng)用到 'Numbers' 列
df['Numbers'] = df['Numbers'].apply(lambda x: int(x))

print(df.dtypes)

3 數(shù)據(jù)去重

在 Pandas 中,您可以使用 drop_duplicates() 方法來(lái)刪除重復(fù)的行。這個(gè)方法會(huì)返回一個(gè)新的 DataFrame,其中不包含重復(fù)的行。以下是如何在 Pandas 中執(zhí)行數(shù)據(jù)去重操作的示例:

import pandas as pd

# 創(chuàng)建示例 DataFrame
data = {'Name': ['Alice', 'Bob', 'Alice', 'David', 'Bob'],
        'Age': [25, 30, 25, 40, 30]}
df = pd.DataFrame(data)

# 執(zhí)行去重操作,基于所有列
df_no_duplicates = df.drop_duplicates()

print("原始 DataFrame:")
print(df)

print("\n去重后的 DataFrame:")
print(df_no_duplicates)

上述示例中,drop_duplicates() 方法將基于所有列的內(nèi)容來(lái)去重。如果要基于特定列進(jìn)行去重,您可以通過(guò)傳遞 subset 參數(shù)來(lái)指定:

# 基于 'Name' 列進(jìn)行去重
df_no_duplicates_name = df.drop_duplicates(subset=['Name'])

print("基于 'Name' 列去重后的 DataFrame:")
print(df_no_duplicates_name)

您還可以使用 keep 參數(shù)來(lái)控制保留哪一個(gè)重復(fù)值。例如,keep='first'(默認(rèn)值)將保留第一個(gè)出現(xiàn)的值,而 keep='last' 將保留最后一個(gè)出現(xiàn)的值:

# 基于 'Name' 列進(jìn)行去重,保留最后一個(gè)出現(xiàn)的值
df_keep_last = df.drop_duplicates(subset=['Name'], keep='last')

print("基于 'Name' 列去重,保留最后一個(gè)出現(xiàn)的值的 DataFrame:")
print(df_keep_last)

這些示例演示了如何使用 Pandas 進(jìn)行數(shù)據(jù)去重。根據(jù)您的需求,您可以選擇不同的去重方式。

4 數(shù)據(jù)合并和連接

????????在 Pandas 中,您可以使用不同的方法進(jìn)行數(shù)據(jù)合并和連接,這通常用于將多個(gè)數(shù)據(jù)集組合在一起以進(jìn)行分析。以下是一些常見(jiàn)的數(shù)據(jù)合并和連接操作以及示例:

4.1 pd.concat()

? 用于將多個(gè) DataFrame 沿指定軸(通常是行軸或列軸)堆疊在一起。pd.concat() 默認(rèn)在行軸(axis=0)上堆疊多個(gè) DataFrame,也就是沿著行方向?qū)⑺鼈冞B接在一起。如果您想在列軸(axis=1)上堆疊多個(gè) DataFrame,可以通過(guò)指定 axis 參數(shù)為1 來(lái)實(shí)現(xiàn)。

import pandas as pd

# 創(chuàng)建兩個(gè)示例 DataFrame
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
                    'B': ['B0', 'B1', 'B2']})

df2 = pd.DataFrame({'A': ['A3', 'A4', 'A5'],
                    'B': ['B3', 'B4', 'B5']})

# 在行軸上堆疊兩個(gè) DataFrame
result1 = pd.concat([df1, df2])

# 在列軸上堆疊兩個(gè) DataFrame
result2 = pd.concat([df1, df2], axis=1)

print(result1,result2)

輸出:

【100天精通Python】Day56:Python 數(shù)據(jù)分析_Pandas數(shù)據(jù)清洗和處理,100天精通Python,信息可視化,python

4.2 pd.merge()

用于基于一個(gè)或多個(gè)鍵(列)將兩個(gè) DataFrame 合并在一起,類似于 SQL 的 JOIN 操作。

import pandas as pd

# 創(chuàng)建兩個(gè)示例 DataFrame
left = pd.DataFrame({'key': ['K0', 'K1', 'K2'],
                     'value_left': ['V0', 'V1', 'V2']})

right = pd.DataFrame({'key': ['K1', 'K2', 'K3'],
                      'value_right': ['V3', 'V4', 'V5']})

# 基于 'key' 列進(jìn)行合并
result = pd.merge(left, right, on='key')

print(result)

輸出

【100天精通Python】Day56:Python 數(shù)據(jù)分析_Pandas數(shù)據(jù)清洗和處理,100天精通Python,信息可視化,python?

4.3 df.join()

????????用于將兩個(gè) DataFrame 沿索引合并。

import pandas as pd

# 創(chuàng)建兩個(gè)示例 DataFrame
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
                    'B': ['B0', 'B1', 'B2']}, index=['I0', 'I1', 'I2'])

df2 = pd.DataFrame({'C': ['C0', 'C1', 'C2'],
                    'D': ['D0', 'D1', 'D2']}, index=['I1', 'I2', 'I3'])

# 沿索引合并兩個(gè) DataFrame
result = df1.join(df2)

print(result)

輸出:

【100天精通Python】Day56:Python 數(shù)據(jù)分析_Pandas數(shù)據(jù)清洗和處理,100天精通Python,信息可視化,python

這些是一些常見(jiàn)的數(shù)據(jù)合并和連接操作示例。根據(jù)您的需求,您可以選擇適當(dāng)?shù)姆椒▉?lái)合并和連接數(shù)據(jù)集。 Pandas 提供了豐富的選項(xiàng)和參數(shù),以滿足不同的合并和連接需求。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-698159.html

到了這里,關(guān)于【100天精通Python】Day56:Python 數(shù)據(jù)分析_Pandas數(shù)據(jù)清洗和處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包