python資料探勘03 Pandas

2021-10-01 09:43:20 字數 4431 閱讀 3206

pandas集合了numpy與matplotlib,在資料處理能力上更具有便捷性,讀取資料檔案較方便。

pandas中的結構,可以看作帶有行索引和列索引的二維表結構。

行對應index,列對應columns。

import pandas as pd

import numpy as np

stock_change = np.random.normal(0,1,size=(10,5))

# 建立名稱索引

names = ["stock{}".format(i) for i in range(10)]

# 建立日期索引

dates = pd.date_range("20191211", periods=5)

pd.dataframe(stock_change, index=names, columns=dates)

1、檢視表頭尾元素:

# 預設顯示前5行,也可以在括號內指定

data.head()

data.tail(2)

2、索引設定:

dataframe只支援對整列的索引進行修改。

# 重置索引,drop預設為false,保留原索引

data.reset_index(drop=true)

# 以某列值為新的索引,可以指定多列為新的索引(multindex)

# drop預設為true,捨棄原有列的元素值

data.set_index("price", drop=false)

3、multindex:

用於表示三維資料。

# 設定data的兩個屬性為表索引

data.set_index(['name', 'price'])

# 檢視level的名稱

data.index.names

# 檢視level的元素值

data.index.levels

4、刪除指定列:

# 按照1軸上的索引刪除指定列

data.drop(['good1', 'good2'], axis=1)

用於儲存一行或一列的資料,以及相關的索引集合。

dataframe是series的容器。

# 建立series

data =

res = pd.series(data,index=["d","c","b","a"])

# 通過索引值訪問元素

data["a"]

1、索引訪問:

對於乙個資料表dataframe,我們通常按照先行後列的方式進行資料的訪問。

a = np.random.randint(1,10,size=(8,5))

names = ["good{}".format(i) for i in range(5)]

shops = pd.date_range("2019/12/11", periods=8)

data = pd.dataframe(a, index=shops, columns=names)

# 訪問第二行的index的全部元素

data.iloc[1,:]

#good0 4

good1 9

good2 2

good3 2

good4 1

name: 2019-12-12 00:00:00, dtype: int32

data.loc["2019-12-14", "good3"]
# 包含第二行的第乙個元素到第三個元素

data.iloc[1,:3]

2、排序:

可以對內容進行排序也可以對索引進行排序。

# 對dataframe進行排序,ascending預設為true,為公升序

data.sort_values("good2", ascending="true")

# 對series按照值進行排序

s = data.iloc[1,:3]

s.sort_values()

# 可以以dataframe的兩個屬性為基準進行排序

data.sort_values(["good1","good2"])

#對索引進行排序

data.sort_index(ascending=false)

3、條件查詢:

# 邏輯表示式的方式

data[(data['good0'] > 3)&(data['good3']>5)]

# 條件查詢

data.query('good0 > 3 & good3 > 5')

# 查詢值是否在範圍內

data['good4'].isin([3,5])

1、describe():

顯示統計數值,包含一系列統計資訊,既可以對dataframe使用也可以對serise使用。

2、統計函式:

# 如max,min,std等,預設按照列的元素求最值,也可以指定軸去求

data.max(axis=1)

# 最值所在位置,在numpy中使用argmax,在pandas中使用idxmax

data.idxmax()

# 累計統計函式

data['good0'].cumsum() # 累加

data['good0'].cummax() # 累計最值

3、自定義運算:

# 自定義運算用lambda表示式來定義
pandas自身也包含繪圖功能。

# kind指定繪圖的型別,指定x,y的座標

data.plot(x='', y='', kind='line')

1、讀取:

# 讀取csv檔案,指定讀取列

pd.read_csv('/path', usecols=['good0', 'good1'])

# 指定列名字段

pd.read_csv('/path', names=['good0', 'good1'])

2、寫入:

有時當我們把帶索引的資料存到csv檔案中時,索引列會變成單獨的一列資料,可以設定index刪除原行索引,也可以set_index

# 儲存檔案用to_csv()

data[:10].to_csv('/path', columbs=, index=false)

# 設定mode值為a可以選擇是否追加資料

data[:10].to_csv('/path', columbs=, index=false, mode='a')

# 追加資料時,連續寫入也會將columbs的列索引新增,將header屬性設定為false即可

data[:10].to_csv('/path', columbs=, index=false, mode='a', header=false)

缺失值的處理通常有兩種方式,刪除替換

numpy中對缺失值的處理過於繁瑣,在pandas中處理的方式較為簡單。

1、替換nan:

# 判斷dataframe資料是否含空,返回布林值

pd.isnull(df)

# 判斷dataframe資料是否不含空布林值

pd.notnull(df)

# 刪除具有缺失值的行樣本資料,inplace來標識修改是否覆蓋源資料

df.dropna(inplace=false)

# 替換缺失值

df.fillna(value, inplace=)

2、替換非nan字元:

思路,先將非nan字元替換成nan,再對缺失值做處理。

# 填寫缺失值需要引入numpy包

df_new = df.replace(to_replace='?', value=np.nan)

03 資料探勘

一 資料探勘建模過程 1 資料取樣 2 資料探索 3 模式發現 4 資料建模 5 模型評估 誤差分析 二 資料探勘的基本任務 1 分類與 有目標的對事物進行分類 如 文字分類 手寫體識別等。2 關聯規則 關聯模式挖掘旨在從大量的資料當中發現特徵之間或資料之間的相互依賴關係。這種存在於給定資料集中的頻...

python資料探勘面試 位元組跳動資料探勘面試總結

1.資料探勘任務 使用者常住城市 2.資料倉儲任務 演出主藝人名標籤挖掘 3.mapreduce原理 4.mapreduce特別慢的原因 4.1 計算機效能 cpu 記憶體 磁碟健康 網路 4.2 i o操作優化 資料傾斜 map reduce數設定不合理 reduce等待過久 小檔案過多 大量的不...

python資料分析與挖掘實戰 資料探勘基礎

從大量資料 包括文字 中挖掘出隱含的 未知的 對決策有潛在價值的關係 模式和趨勢,並用這些知識和規則建立用於決策支援的模型,提高 性決策支援的方法 工具和過程,就是資料探勘 它是利用各種分析工具在大量資料中尋找其規律和發現模型與資料之間關係的過程,是統計學 資料庫技術和人工智慧技術的綜合。1.定義挖...