文章目錄
- NumPy
- Numpy數據結構
- 安裝和使用NumPy
- Matplotlib的安裝和導入
- 安裝和導入Matplotlib
- 繪制基礎圖畫
- 折線圖
- 散點圖
- 柱狀圖
- 圖例
- 數據清洗
- 據清洗的作用
- Pandas進行數據清洗
- Pandas數據結構
- Series 數據結構
- DataFrame數據結構
- Pandas數據清洗常用代碼
- 特征工程
- 主成分分析
- 線性判別分析
- Scikit-learn數據預處理
- 數據標準化
- 特征工程
NumPy
- NumPy(Numerical Python) 是科學計算基礎庫,提供大量科學計算相關功能,比如數據統計,隨機數生成等。其提供最核心類型為多維數組類型(ndarray),支持大量的維度數組與矩陣運算,Numpy支持向量處理ndarray對象,提高程序運算速度。
- 多維數組支持:NumPy 提供了靈活且高效的多維數組(ndarray)結構,支持從一維到高維的數據存儲。
- 高效的數學運算:內置了大量的數學函數,能夠在數組上進行快速的向量化計算。
- 線性代數和隨機數生成:提供了豐富的線性代數運算(矩陣乘法、特征值分解等)和隨機數生成器。
- 集成性:與其他科學計算庫(如SciPy、Pandas、Matplotlib)無縫銜接。
Numpy數據結構
ndarray是NumPy庫的核心數據結構,用于表示多維數組。
- 維度:ndarray可以具有任意數量的維度,從一維(向量)到三維(立體)、四維甚至更高。每個維度的大小稱為軸長。
- 形狀:ndarray對象具有一個描述其維度大小的元組,稱為形狀(Shape)。例如,二維數組的形狀可能是(3,4),表示有3行4列。
- 數據類型:ndarray中的所有元素都必須是相同的數據類型。數據可以是整數、浮點數、復數等。
- 內存布局:ndarray在內存中是連續存儲的,這意味著它允許高效的數據訪問和操作。
- 索引和切片:ndarray支持使用方括號進行索引和切片,這允許你訪問、修改或操作數組的特定部分。
- 廣播:ndarray支持廣播功能,這是一種機制,允許在不同形狀的數組之間進行數學運算。
- 數學運算:ndarray支持各種數學運算,如加法、減法、乘法、除法等,這些運算可以逐元素應用于數組中的每個元素。
- 函數:NumPy提供了許多內置函數,可以對ndarray執行各種操作,如求和、求平均值、求最大值、求最小值等。
- 通用函數:NumPy還提供了通用函數(ufunc),這些函數可以對ndarray中的每個元素執行操作,而不需要循環。
安裝和使用NumPy
- 通過 pip 安裝 NumPy:
pip install numpy
- 基本使用示例
import numpy as np#創建一個二維數組
arr = np.array([[1, 2, 3], [4, 5, 6]])
print("數組維度:", arr.ndim) # 輸出:2
print("數組形狀:", arr.shape) # 輸出:(2, 3)
print("元素類型:", arr.dtype) # 輸出:int64#數組運算
result = np.dot(arr.T, arr) # 計算矩陣乘法
print("結果:\n", result)
import numpy as np#創建一個二維數組
arr_a = np.array([[1, 2, 3], [4, 5, 6]])
arr_b = np.array([1, 2, 3])
c=np.add(arr_a, arr_b)print(c)
import numpy as np#創建一個二維數組
arr = np.array([[1, 2], [4, 5]])
print(arr[0])
print(arr[1])
Matplotlib的安裝和導入
- Matplotlib是一個用于繪制圖形的Python庫,可用于實現數據的可視化展示。
安裝和導入Matplotlib
- 安裝和驗證命令
pip install matplotlib
import matplotlib
print(matplotlib.__version__)
- 導入Matplotlib和解決中文報錯
import matplotlib.pyplot as plt
# 設置支持中文的字體
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解決負號顯示問題,確保在圖表中正確顯示負號
plt.rcParams['axes.unicode_minus'] = False
繪制基礎圖畫
折線圖
import matplotlib.pyplot as plt# 設置支持中文的字體
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解決負號顯示問題,確保在圖表中正確顯示負號
plt.rcParams['axes.unicode_minus'] = False
#定義x和y的值
x=[1,2,3,4,5]
y=[2,4,6,8,10]
#使用折線圖展示x和y的關系
plt.plot(x,y)
plt.xlabel('x軸')
plt.ylabel('y軸')
plt.title('折線圖')
#顯示圖表
plt.show()
散點圖
#%% md
## 散點圖
#%%
import matplotlib.pyplot as plt
# 設置支持中文的字體
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解決負號顯示問題,確保在圖表中正確顯示負號
plt.rcParams['axes.unicode_minus'] = False
#定義x和y的值
x=[1,2,3,4,5]
y=[2,4,6,8,10]
#使用折線圖展示x和y的關系
plt.scatter(x,y)
plt.xlabel('x軸')
plt.ylabel('y軸')
plt.title('折線圖')
#顯示圖表
plt.show()
柱狀圖
plt.show()
#%%
import matplotlib.pyplot as plt
# 設置支持中文的字體
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解決負號顯示問題,確保在圖表中正確顯示負號
plt.rcParams['axes.unicode_minus'] = False
#定義x和y的值
x=[1,2,3,4,5]
y=[2,4,6,8,10]
#使用折線圖展示x和y的關系
plt.bar(x,y)
plt.xlabel('x軸')
plt.ylabel('y軸')
plt.title('折線圖')
#顯示圖表
plt.show()
圖例
import matplotlib.pyplot as plt
# 設置支持中文的字體
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解決負號顯示問題,確保在圖表中正確顯示負號
plt.rcParams['axes.unicode_minus'] = False
#定義x和y的值
x=[1,2,3,4,5]
y_1=[2,4,6,8,10]
y_2=[3,5,7,9,11]#使用折線圖展示x和y的關系
plt.plot(x,y_1,label='數據1')
plt.plot(x,y_2,label='數據2')
plt.xlabel('x軸')
plt.ylabel('y軸')
plt.title('折線圖')
# 添加圖例
plt.legend()
#顯示圖表
plt.show()
數據清洗
- 數據清洗是數據預處理的一部分,主要是對數據進行審查和校驗,以確保其準確性、完整性、一致性和可靠性。
據清洗的作用
- 數據清洗是機器學習和深度學習中的一個重要步驟,對模型的性能有著決定性的影響。
- 盡管深度學習模型,尤其是深度神經網絡具有很強的特征學習能力,可以在一定程度上容忍數據的不完美,但這并不意味著可以完全忽略數據清洗的步驟。良好的數據預處理可以幫助模型更快地收斂,提高訓練效率,同時也可以防止模型過擬合。
- 據清洗主要包括以下內容:
- 刪除重復信息:識別并去除數據中的重復記錄,這些可能是由于數據錄入錯誤或系統錯誤產生的。
- 糾正錯誤:查找并修正數據中的錯誤,例如小數點位置錯誤、拼寫錯誤或其他錄入錯誤。
- 提供數據一致性:確保數據集中的信息是一致的,比如統一日期格式或文本的大小寫,以便可以進行有效的比較和分析。
- 處理無效值或缺失值:對于數據中的無效值或缺失值,需要決定是刪除還是填充這些值,以保持數據的完整性。
- 消除異常值:檢測并處理那些不符合常規模式的值,這些可能是由于測量錯誤或其他原因造成的。
- 數據轉換和格式化:對數據進行調整,以滿足特定的分析需求,例如日期的轉換、數值的標準化等。
- 可以使用Python中的NumPy、Pandas或Scikit-learn庫實現數據清洗。
Pandas進行數據清洗
- Pandas是一個用于數據分析的Python庫,是Python中進行數據處理和分析的一個強大工具,它提供了快速、靈活且直觀的數據結構,特別適合處理關系型和標記型數據。
Pandas的重要特性。 - 數據結構:Pandas提供了兩種主要的數據結構:Series和DataFrame。Series是一種一維的標簽化數組;而DataFrame是一種二維的表格型數據結構,可以想象成一個Excel表格或數據庫中的表。
- 數據處理:Pandas提供了大量的函數和方法,使得數據的清洗、轉換和分析變得更加高效和便捷。這些功能包括但不限于數據篩選、排序、分組、合并以及時間序列分析等。
- 數據可視化:Pandas與Matplotlib等繪圖庫緊密結合,提供了一些內置的繪圖功能,方便用戶對數據進行可視化分析。
Pandas數據結構
Series 數據結構
- Series是一種強大的一維數據結構,它不僅能夠存儲數據,還提供了豐富的方法和操作,使得數據分析變得更加高效和便捷。
- Series具有多個特性:多種創建方式,切片和索引,缺失值檢測,自動對齊
import pandas as pd
s=pd.Series([1,2,3,4,5])
print(s)
0 1
1 2
2 3
3 4
4 5
dtype: int64
DataFrame數據結構
- DataFrame是Pandas庫的核心數據結構,它類似于一個二維表格,可以存儲多種類型的數據,并且具有很多方便進行數據處理的功能。
- DataFrame的關鍵特性包括:二維標簽化數據結構,潛在的異質性,數據處理,數據分析,數據存儲,查詢便捷
- 潛在的異質性:DataFrame中的每列可以是不同的數據類型,包括數值、字符串或布爾值等。
- DataFrame是Pandas庫中的一個類,用于創建二維表格型數據結構。
- data是一個包含數據的字典或列表,其中字典的鍵表示列名,字典的值表示對應列的數據。如果data是一個列表,則每個元素代表一行數據。
import pandas as pddata={'Name':['Alice','Bob','Charlie'],'Age':[25,30,35],'City': ['New York','London','Paris']
}
s=pd.DataFrame(data)
print(s)
Pandas數據清洗常用代碼
import pandas as pd
# 讀取數據
data=pd.read_csv('data.csv')
data=pd.read_excel('data.csv')# 查看前5行信息
print(data.head())#刪除含有缺失值的行
data.dropna(inplace=True)
#使用平均值填充缺失值
data.fillna(data.mean(),inplace=True)#檢測重復行
duplicatess=data.duplicated()
#刪除重復行
data.drop_duplicates(inplace=True)
# 去除異常值
data = data[(np.abs(stats.zscore(data['column_to_clean'])) < 3)]# 數據類型轉換
data['date']= pd.to_datetime(data['date'])#篩選年齡大于或等于18歲的記錄
filtered_data = data[data['age'] >= 18]
#按年齡升序排列
sorted_data = filtered_data.sort_values(by='age', ascending=True)#假設有兩個數據集:data1和data2
merged_data = pd.merge(datal, data2, on='customer_id')
特征工程
- 特征工程是指對原始數據進行預處理、選擇、修改和構建新的特征的過程,以便提高模型的性能。這個過程包括數據清洗、特征選擇、特征轉換和降維等。
- 特征工程的作用包括:提高模型性能,減少過擬合,提高訓練速度,數據清洗,特征選擇,降維。
主成分分析
- 主成為分析(PCA)是一種數據降維技術,它的核心目的是通過變換找到數據中最重要的特征,也就是主成分,以減少數據的復雜性,同時保留大部分信息。主成分分析就像是用一個濾鏡來優化你的照片,只保留最精華的部分,去掉那些不重要的雜亂背景,使得圖片更加清晰和突出重點。
線性判別分析
- 線性判別分析是一種統計方法,它用于找到能夠最大化不同類別數據之間差異的方向。這種方法在機器學習和統計中被廣泛用于降維和分類。
- 線性判別分析就是找到一個能夠最好地區分不同類別的方向,通過這個方向可以簡化數據,同時保留最重要的區分信息。
Scikit-learn數據預處理
- Scikit-learn是一個開源的、廣泛使用的機器學習工具包,其提供了豐富的機器學習算法,例如回歸、聚類、降維等,同時還支持數據預處理、模型評估及參數調優等功能。
pip install scikit-learn
數據標準化
- Min-Max標準化(極差法):這種方法通過將原始數據按照最小值和最大值進行線性變換,使得轉換后的數據落在一個特定的區間內,通常是[0,1]。這種方法簡單直觀,適用于大多數情況,特別是當數據分布相對均勻時。
- Z-score標準化(標準差法):這種方法基于原始數據的均值和標準差進行轉換,使得轉換后的數據具有零均值和單位方差。這種方法適用于數據分布近似正態分布的情況,可以有效地消除不同量綱和數量級的影響。
#導入相關庫
import numpy as np
from sklearn.preprocessing import StandardScaler
#創建一個示例數據集
data =np.array([[1,2],[3,4],[5,6]])
#初始化StandardScaler對象
scaler = StandardScaler()
#使用fit_transform方法對數據進行標準化
normalized_data = scaler.fit_transform(data)
print("原始數據:")
print(data)
print("標準化后的數據:")
print(normalized_data)
特征工程
- 創建數據集:使用Pandas 庫創建一個DataFrame,包含三列數據’A’,‘B’,'C"。
- 特征選擇:計算各列之間的相關系數,然后選擇與C列相關系數大于0.5的列作為特征。
- 特征提取:使用PCA(主成分分析)方法對數據進行降維,將數據的維度從3降到2。
- 特征縮放:使用StandardScaler對數據進行標準化處理,使得每一列的數據都符合標準正態分布。
import pandas as pd
from sklearn.preprocessing import StandardScaler
#創建數據集
data = pd.DataFrame({'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]})
#特征選擇(以相關系數為例)
correlations = data.corr().abs()
features = correlations[correlations['C'] > 0.5].index.tolist()
#特征提取(以PCA為例)
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
data_pca = pca.fit_transform(data)
#特征縮放
scaler = StandardScaler()
data_scaled = scaler.fit_transform(data)
#顯示處理后的數據
print("特征選擇結果:",features)
print("特征提取結果:",data_pca)
print("特征縮放結果:",data_scaled)