pandas
進行數(shù)據(jù)整理的意義在于,它是數(shù)據(jù)分析、數(shù)據(jù)科學和機器學習的前置步驟。
通過數(shù)據(jù)整理可以提前了解數(shù)據(jù)的概要,缺失值、重復值等情況,為后續(xù)的分析和建模提供更為可靠的數(shù)據(jù)基礎。
本篇主要介紹利用pandas
進行數(shù)據(jù)整理的各種方法。
1. 數(shù)據(jù)概要
獲取數(shù)據(jù)概要信息可以幫助我們了解數(shù)據(jù)的基本情況,包括數(shù)據(jù)的大小、數(shù)據(jù)類型、缺失值的情況、數(shù)據(jù)的分布情況等。
這些信息對于我們進行數(shù)據(jù)分析、數(shù)據(jù)處理和建模等工作非常重要。
獲取數(shù)據(jù)概要信息是進行數(shù)據(jù)分析和處理的基礎,也是保障數(shù)據(jù)分析和建模結果準確性的重要步驟。
測試數(shù)據(jù)導入:
import pandas as pd
fp = "http://databook.top:8888/pandas/cn-people.csv"
df = pd.read_csv(fp)
df
1.1 dtypes 數(shù)據(jù)類型
查看數(shù)據(jù)類型:
df.dtypes
數(shù)據(jù)集中4個列的類型如上所示。
1.2 describe 數(shù)值列統(tǒng)計
選取數(shù)值列value
,統(tǒng)計其情況看看:
df.value.describe()
# df["value"].describe()
統(tǒng)計的內容包括:總數(shù)、平均數(shù)、標準差、最小值、最大值等等。
1.3 value_counts 各類數(shù)據(jù)的數(shù)量
比如,統(tǒng)計指標中文這列,看看不同的指標對應的數(shù)據(jù)量。
df["指標中文"].value_counts()
可以看出,每種指標的數(shù)據(jù)都是 44 條。
1.4 info 整體的基本信息
df.info()
info
函數(shù)包括每列的名稱、數(shù)據(jù)類型、非空值數(shù)量、甚至內存使用量等信息。
2. 缺失值處理
收集的數(shù)據(jù)難免缺失,對缺失值的處理進行分析前必要的步驟,因為:
- 保證數(shù)據(jù)的完整性和準確性。缺失值的存在可能會影響數(shù)據(jù)的可靠性和分析結果的準確性,因此及時處理缺失值能夠保證數(shù)據(jù)的完整性和準確性。
- 提高數(shù)據(jù)分析結果的準確性。處理缺失值能夠提高數(shù)據(jù)分析結果的準確性,因為缺失值會對數(shù)據(jù)分析結果產生一定的偏差,處理缺失值能夠減少這種偏差,提高數(shù)據(jù)分析結果的可靠性。
- 使數(shù)據(jù)更容易被理解和處理。處理缺失值能夠使數(shù)據(jù)更加規(guī)范和標準化,從而方便數(shù)據(jù)的理解和處理。如果數(shù)據(jù)中存在大量的缺失值,可能會造成數(shù)據(jù)處理困難,降低數(shù)據(jù)的處理效率。
- 使得數(shù)據(jù)更加適合建模。處理缺失值能夠使得數(shù)據(jù)更加適合建模,因為缺失值可能會影響模型的訓練和預測效果,處理缺失值能夠提高模型的準確性和可靠性。
pandas
中提供了 isnull
和 notnull
兩個函數(shù)來標記缺失值,也提供了fillna
和 dropna
兩個函數(shù)來處理缺失值。
演示缺失值處理的測試數(shù)據(jù)如下:
import pandas as pd
fp = "http://databook.top:8888/pandas/missing-values.csv"
df = pd.read_csv(fp)
df
缺失的數(shù)據(jù)默認值為 NaN
。
2.1 查看缺失值
pandas
通過isnull
函數(shù)可以標記缺失的值,缺失的值顯示為 True
。
df.isnull()
notnull
函數(shù)與之相反,缺失的值顯示為 False
。
df.notnull()
通過這兩個函數(shù),可以很方便的過濾包含或未包含缺失值的數(shù)據(jù)。
# value缺失 【并且】 指標中文未缺失的數(shù)據(jù)
df[df.value.isnull() & df["指標中文"].notnull()]
# value未缺失 【或者】 指標中文缺失的數(shù)據(jù)
df[df.value.notnull() | df["指標中文"].isnull()]
2.2 填充缺失值
對于缺失值,為了防止其對后續(xù)的分析算法造成影響,一般有兩種處理方式。
一種是填充默認值,一種是直接刪除包含缺失值的數(shù)據(jù)。
填充缺失值用fillna
函數(shù)。
df.value = df.value.fillna(0.0)
df["指標編碼"] = df["指標編碼"].fillna("A000000")
df["指標中文"] = df["指標中文"].fillna("默認指標")
df
各列填充不同的默認值之后如上。
2.3 刪除缺失值
刪除缺失值時,請關注2個關鍵的參數(shù)。
一個是 how
,另一個是subset
。how="all"
時,只有當前列所有數(shù)據(jù)都是NaN
時才刪除。
df.dropna(how="all")
沒有滿足條件的數(shù)據(jù),所有數(shù)據(jù)都保留下來了。
how="any"
時,只要有一個數(shù)據(jù)是NaN
,就會刪除當前行數(shù)據(jù)。
df.dropna(how="any")
所有數(shù)據(jù)都刪除了,因為示例數(shù)據(jù)中每一行都有一個NaN
數(shù)據(jù)。
除了how
之外,另一個常用的參數(shù)是subset
,與how
相比,它可以具體指定哪些列為NaN
時才刪除數(shù)據(jù)。
df.dropna(subset=["value", "指標中文"])
指標中文
或者value
為NaN
的數(shù)據(jù)都刪除了。
3. 重復值處理
在數(shù)據(jù)分析中,處理重復值是非常重要的,因為重復值會影響分析結果和數(shù)據(jù)準確性。
處理重復值可以:
- 避免重復計算:重復值可能會導致重復計算,從而影響數(shù)據(jù)分析結果的準確性。
- 減少存儲空間:去除重復值可以減少數(shù)據(jù)存儲空間,從而提高數(shù)據(jù)處理效率。
- 提高數(shù)據(jù)分析精度:處理重復值可以提高數(shù)據(jù)分析的準確性和精度,從而幫助分析師做出更準確的決策。
- 符合數(shù)據(jù)質量標準:去除重復值可以提高數(shù)據(jù)的完整性和一致性,符合數(shù)據(jù)質量標準。
- 簡化數(shù)據(jù)可視化:處理重復值可以簡化數(shù)據(jù)可視化操作,從而幫助分析師更好地理解數(shù)據(jù)。
演示重復值處理的測試數(shù)據(jù)如下:
import pandas as pd
fp = "http://databook.top:8888/pandas/duplicate-values.csv"
df = pd.read_csv(fp)
df
3.1 查找重復值
pandas
提供了duplicated()
方法來檢查DataFrame中的重復值。
該方法返回一個布爾Series
,其中True
表示該行是重復的,False
表示該行不是重復的。
df.duplicated()
根據(jù)index
,可以看出哪些行是重復的。
3.2 刪除重復值
對于重復的值,一般都是直接刪除。
刪除重復數(shù)據(jù)的方法drop_duplicates
中有個keep
參數(shù)可以重點關注下。
# 重復時,保留第一個數(shù)據(jù)
df.drop_duplicates(keep="first")
keep="first"
時,從index
可以看出,保留的是重復數(shù)據(jù)中index
最小的數(shù)據(jù)。
# 重復時,保留最后一個數(shù)據(jù)
df.drop_duplicates(keep="last")
keep="last"
時,從index
可以看出,保留的是重復數(shù)據(jù)中index
最大的數(shù)據(jù)。
df.drop_duplicates(keep=False)
keep=False
時,所有重復的數(shù)據(jù)都被刪除了。
4. 總結回顧
本篇主要介紹pandas
在數(shù)據(jù)整理方面的能力,主要包括:文章來源:http://www.zghlxwxcb.cn/news/detail-443654.html
- 數(shù)據(jù)概要信息的獲取
- 缺失值的處理
- 重復值的處理
熟練掌握數(shù)據(jù)整理的方法,可以讓后續(xù)的分析步驟更加高效。文章來源地址http://www.zghlxwxcb.cn/news/detail-443654.html
到了這里,關于【pandas基礎】--數(shù)據(jù)整理的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!