Pandas 是 Python 語言的一個擴展程式庫,用于資料分析,
Pandas 是一個開放原始碼、BSD 許可的庫,提供高性能、易于使用的資料結構和資料分析工具,
Pandas 名字衍生自術語 "panel data"(面板資料)和 "Python data analysis"(Python 資料分析),
Pandas 一個強大的分析結構化資料的工具集,基礎是 numpy(提供高性能的矩陣運算),
Pandas 可以從各種檔案格式比如 CSV、JSON、SQL、Microsoft Excel 匯入資料,
Pandas 可以對各種資料進行運算操作,比如歸并、再成形、選擇,還有資料清洗和資料加工特征,
資料結構
Series 是一種類似于一維陣列的物件,它由一組資料(各種Numpy資料型別)以及一組與之相關的資料標簽(即索引)組成,
DataFrame 是一個表格型的資料結構,它含有一組有序的列,每列可以是不同的值型別(數值、字串、布爾型值),DataFrame 既有行索引也有列索引,它可以被看做由 Series 組成的字典(共同用一個索引),
一、Pandas 安裝
安裝 pandas 需要基礎環境是 Python,開始前我們假定你已經安裝了 Python 和 Pip,
pip install pandas
查看pandas的版本
import pandas as pd
print(pd.__version__)
二、Pandas 資料結構 -- Series
pandas.Series( data, index, dtype, name, copy)
data:一組資料(ndarray 型別),
index:資料索引標簽,如果不指定,默認從 0 開始,
dtype:資料型別,默認會自己判斷,
name:設定名稱,
copy:拷貝資料,默認為 False,
mydataset = {
'sites': ["Google", "Runoob", "Wiki"],
'number': [1, 2, 3]
}
#將字典型別轉化成dataframe型別
myvar = pd.DataFrame(mydataset)
print(myvar)
print()
a = [1, 2, 3]
myvar = pd.Series(a)
print(myvar)
print(myvar[1])#指定索引查詢
sites = {1: "Google", 'runoob': "Runoob", 3: "Wiki"}
myvar = pd.Series(sites)#使用字典型別創建Series,key的值就成了索引值
print(myvar)
print()
# 引數index
a = ["Google", "Runoob", "Wiki"]
myvar = pd.Series(a, index = ["x", "y", "z"])#index指定索引名稱
print(myvar)
print(myvar['y'])
print()
sites = {1: "Google", 2: "Runoob", 3: "Wiki"}
myvar = pd.Series(sites, index = [3, 2])#使用索引,截取字典中所需的部分
print(myvar)
print()
# 引數name,設定name屬性
sites = {1: "Google", 2: "Runoob", 3: "Wiki"}
myvar = pd.Series(sites, index = [1, 2], name="I is series(name)" )
print(myvar)
三、Pandas 資料結構 - DataFrame
pandas.DataFrame( data, index, columns, dtype, copy)
data:一組資料(ndarray、series, map, lists, dict 等型別),
index:索引值,或者可以稱為行標簽,
columns:列標簽,默認為 RangeIndex (0, 1, 2, …, n) ,
dtype:資料型別,
copy:拷貝資料,默認為 False,
data = https://www.cnblogs.com/komorebiZjh/p/[['Google',10],['Runoob',12],['Wiki',13]]
df = pd.DataFrame(data,columns=['Site','Age'],dtype=float) # 串列轉dataframe
print(df)
data = https://www.cnblogs.com/komorebiZjh/p/{'Site':['Google', 'Runoob', 'Wiki'], 'Age':[10, 12, 13]}
df = pd.DataFrame(data) # 字典轉dataframe
print (df)
data = https://www.cnblogs.com/komorebiZjh/p/[{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data)
print (df)
data = https://www.cnblogs.com/komorebiZjh/p/{"calories": [420, 380, 390],
"duration": [50, 40, 45]
}
df = pd.DataFrame(data)
print(df)
print(df.loc[0])# 使用df.loc[]回傳第一行
print(df.loc[1])# 使用df.loc[]回傳第一行
print(df.loc[[0,1]])# 使用df.loc[[ ]]回傳兩行資料
print(df.loc[0:1,['calories']])# 使用df.loc[a:b ,[' ']]回傳指定某列 a~b的資料
data = https://www.cnblogs.com/komorebiZjh/p/{"calories": [420, 380, 390],
"duration": [50, 40, 45]
}
df = pd.DataFrame(data, index = ["day1", "day2", "day3"])#指定索引值
print(df)
print(df.loc['day2'])
四、Pandas CSV 檔案
1、read_csv() 將csv()檔案匯入,存在Dataframe物件中
import pandas as pd
# pd.read_csv() 讀取csv檔案
df = pd.read_csv('./nba.csv',encoding='GBK')
print(df.to_string())
print(df.loc[:,['Name']])#獲取列
# head()
print(df.head().to_string())#默認獲取前5行
print(df.head(3).to_string())#獲取前3行
# tail()
print(df.tail().to_string())#默認獲取后5行
print(df.head(3).to_string())#獲取后3行
# info() 回傳表格的一些基本資訊
print(df.info())
2、to_csv() 將 DataFrame 存盤為 csv 檔案
import pandas as pd
# 使用 to_csv() 方法將 DataFrame 存盤為 csv 檔案
nme = ["Google", "Runoob", "Taobao", "Wiki"]
st = ["www.google.com", "www.runoob.com", "www.taobao.com", "www.wikipedia.org"]
ag = [90, 40, 80, 98]
dict = {'name': nme, 'site': st, 'age': ag}
df = pd.DataFrame(dict)
# print(df)
df.to_csv('./aaa.csv')# 保存 dataframe到該檔案夾下
df.to_csv(r'C:\Users\Public\Desktop\a1.csv',encoding='utf8')# 保存 dataframe到指定路徑
path = r"C:\Users\Public\Desktop"
wen = '\ccc.csv'
df.to_csv(path+wen,encoding='utf8')
3、to_string() 用于回傳 DataFrame 型別的資料,如果不使用該函式,則輸出結果為資料的前面 5 行和末尾 5 行,中間部分以 ... 代替,
import pandas as pd
df = pd.read_csv('nba.csv') print(df)
五、Pandas JSON
1、JSON 物件與 Python 字典具有相同的格式,所以我們可以直接將 Python 字典轉化為 DataFrame 資料:
import pandas as pd
# 字典格式的 JSON
s = {
"col1":{"row1":1,"row2":2,"row3":3},
"col2":{"row1":"x","row2":"y","row3":"z"}
}
# 讀取 JSON 轉為 DataFrame
df = pd.DataFrame(s)
print(df)
以上實體輸出結果為:
col1 col2 row1 1 x row2 2 y row3 3 z
2、從 URL 中讀取 JSON 資料:
import pandas as pd URL = 'https://static.runoob.com/download/sites.json' df = pd.read_json(URL) print(df)
六、Pandas 資料清洗
資料清洗是對一些沒有用的資料進行處理的程序,
很多資料集存在資料缺失、資料格式錯誤、錯誤資料或重復資料的情況,如果要對使資料分析更加準確,就需要對這些沒有用的資料進行處理,
在這個教程中,我們將利用 Pandas包來進行資料清洗,
1、Pandas 清洗空值
如果我們要洗掉包含空欄位的行,可以使用 dropna() 方法,語法格式如下:
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
引數說明:
axis: 默認為 0,表示逢空值剔除整行,如果設定引數 axis=1 表示逢空值去掉整列, how: 默認為 'any' 如果一行(或一列)里任何一個資料有出現 NA 就去掉整行,如果設定 how='all' 一行(或列)都是 NA 才去掉這整行, thresh: 設定需要多少非空值的資料才可以保留下來的, subset: 設定想要檢查的列,如果是多個列,可以使用列名的 list 作為引數, inplace:如果設定 True,將計算得到的值直接覆寫之前的值并回傳 None,修改的是源資料,默認為False
1.1、添加na_values屬性指定的某些資料修改為空資料(NaN)
# df = pd.read_csv(r'C:\Users\Administrator\Desktop\property-data.csv')
missing_values = ["n/a", "na", "--","N","Y"]
df1 = pd.read_csv('./property-data.csv')
df2 = pd.read_csv('./property-data.csv',na_values=missing_values)#添加na_values屬性指定的某些資料修改為空資料(NaN)
print(df1)
print(df2)
# print(df2['SQ_FT'].isnull())#判斷某列中的各個單元格是否為空
1.2、 dropna() 方法 回傳一個新的 DataFrame,不會修改源資料,
# 如果你要修改源資料 DataFrame, 可以使用 inplace = True 引數: new_df = df1.dropna()#如果某行中有一個單元格資料為空則洗掉整行 new_df2 = df1.dropna(subset=['NUM_BATH'])# 某指定列如果有空資料,則洗掉空資料所在行 print(new_df) # print(new_df2)
1.3、 fillna()方法 來替換一些空欄位
df3 = df1.fillna('666') #添加 inplace=True屬性會改變源資料
df4 = df1['NUM_BEDROOMS'].fillna('555') #指定某列獲取資料并替換空資料
print(df3)
print(df4)
1.4、使用 mean() 方法計算列的均值并替換空單元格
x = df1["ST_NUM"].mean() #指定某列進行平均值計算 df1["ST_NUM"].fillna(x, inplace = True)#使用fillna()方法進行資料替換 print(x) print(df1)
1.5、使用 median() 方法計算列的中位數并替換空單元格:
x = df1["PID"].median() df1_1 = df1["PID"].fillna(x) print(x) print(df1_1)
1.6、使用 mode() 方法計算列的眾數并替換空單元格
x = df1["PID"].mode() df1["PID"].fillna(x,inplace=True) print(x) print(df1)
2、Pandas 清洗格式錯誤資料
3、Pandas 清洗錯誤資料
4、Pandas 清洗重復資料
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/469474.html
標籤:Python
上一篇:Python特性
