利用python進行數據分析(筆記)

《利用python進行數據分析(第二版)》筆記

numpy使用

函數 說明
abs/fabs 計算整數、浮點數或複數的絕對值。對於非複數值,可以使用更快的fabs
sqrt 計算各元素的平方根。相當於arr**0.5
square 計算各元素的平方。相當於arr**2
exp 計算各元素的指數e^x
log/log10/log2/log1p 分別爲自然對數(底數爲e)、底數爲10的log、底數爲2的log、log(1 + x)
sign 計算各元素的正負號:1(正數)、0(零)、-1(負數)
ceil 計算各元素的ceiling值,即大於等於該值的最小整數
floor 計算各元素的floor值,即小於等於該值的最大整數
rint 將各元素四捨五入到最接近的整數,保留dtype
modf 將數組的小數和整數部分以兩個獨立數組的形式返回
isnan 返回一個表示“哪些值是NaN”的布爾型數組
isfinite/isinf 分別返回一個表示“哪些元素是有窮的(非ing,非NaN)”或“哪些元素是無窮的”的布爾型數組
cos/cosh/sin/sinh/tan/tanh 普通型和雙曲型三角函數
arccos/arccosh/arcsin/arcsinh/arctan/arctanh 反三角函數
logical_not 計算各元素not x的真值。相當於-arr
add 將數組中對應的元素相加
subtract 從第一個數組中減去第二個數組中的元素
multiply 數組元素相乘
divide/floor_divide 除法或向下圓整除法(丟棄餘數)
power 對第一個數組中的元素A,根據第二個數組中的相應元素B,計算A^B
maximum/fmax 元素級的最大值計算。fmax將忽略NaN
minimum/fmin 元素級的最小值計算。fmin將忽略NaN
mod 元素級的求模計算(除法的餘數)
copysign 將第二個數組中的值得符號複製給第一個數組中的值
greater/greater_equal/less/less_equal/equal/not_equal 執行元素級的比較運算,最終產生布爾型數組。相當於中綴運算符>、>=、<、<=、==、!=
logical_and/logical_or/logical_xor 執行元素級的真值邏輯運算。相當於中綴運算符&、
sum 對數組中全部或某軸向的元素求和。零長度的數組的sum爲0
mean 算術平均數。零長度的數組的mean爲NaN
std/var 分別爲標準差和方差,自由度可調(默認爲n)
min/max 最大值和最小值
argmin/argmax 分別爲最大或最小元素的索引
cumsum 所有元素的累計和
cumprod 所有元素的累計積
unique(x) 計算x中的唯一元素,並返回有序結果
intersect1d(x, y) 計算x和y中的公共元素,並返回有序結果
union1d(x, y) 計算x和y的並集,並返回有序結果
in1d(x, y) 得到一個表示“x的元素是否包含於y”的布爾型數組
setdiff1d(x, y) 集合的差,即元素在x中且不在y中
setxor1d(x, y) 集合的對稱差,即存在於一個數組中但不同時存在於兩個數組中的元素
  • numpy.linalg函數
函數 說明
diag 以一維數組的形式返回方陣的對角線(或非對角線)元素,或將一維數組轉換爲方陣(非對角線元素爲0)
dot 矩陣乘法
trace 計算對角線元素的和
det 計算矩陣行列式
eig 計算方陣的本徵值和本徵向量
inv 計算方陣的逆
pinv 計算矩陣的Moore-Penrose僞逆
qr 計算QR分解
svd 計算奇異值分解(SVD)
solve 解線性方程組Ax = b,其中A爲一個方陣
lstsq 計算Ax = b的最小二乘解
  • numpy.random函數
函數 說明
seend 確定隨機數生成器的種子
permutation 返回一個序列的隨機排列或返回一個隨機排列的範圍
shuffle 返回一個序列就地隨機排列
rand 產生均勻分佈的樣本值
randint 從給定的上下限範圍內隨機選取整數
randn 產生正態分佈(平均值爲0,標準差爲1)的樣本值
binomial 產生二項分佈的樣本值
normal 產生正態(高斯)分佈的樣本值
beta 產生Beta分佈的樣本值
chisquare 產生卡方分佈的樣本值
gamma 產生Gamma分佈的樣本值
uniform 產生[0,1)均勻分佈的樣本值

Pandas使用

  • 可以給DataFrame構造器的數據
類型 說明
二維ndarray 數據矩陣,還可以傳入行標和列標
由數組、列表或元組組成的字典 每個序列會變成DataFrame的一列
NumPy的結構化/記錄數組 類似於“由數組組成的字典”
由Series組成的字典 每個Series會成爲一列。如果沒有顯式指定索引,則各Series的索引會被合併成結果的行索引
由字典組成的字典 各內層字典會成爲一列。鍵會被合併成結果的行索引,跟“由Series組成的字典”的情況一樣
字典或Series的列表 各項將會成爲DataFrame的一行。字典鍵或Series索引的並集將會成爲DataFrame的列標
由列表或元組組成的列表 類似於“二維ndarray”
另一個DataFrame 該DataFrame的索引將會被沿用,除非顯式指定了其他索引
NumPy的MaskerArray 類似於“二維ndarray”的情況,只是掩碼值在結果DataFrame會變成NA/缺失值
  • Index的方法和屬性
方法 說明
append 連接另一個Index對象,產生一個新的Index
difference 計算差集,並得到一個Index
intersection 計算交集
union 計算並集
isin 計算一個指示各值是否都包含在參數閤中的布爾型數組
delete 刪除索引i處的元素,並得到新的Index
drop 刪除傳入的值,並得到新的Index
insert 將元素插入到索引i處,並得到新的Index
is_monotonic 當各元素均大於等於前一個元素時,返回True
is_unique 當Index沒有重複值時,返回True
unique 計算Index中唯一值得數組
  • reindex函數參數
參數 說明
index 用作索引的新序列。既可以是Index實例,也可以是其他序列型的Python數據結構。Index會被完全使用,就像沒有任何複製一樣
method 插值(填充)方式
fill_value 在重新索引的過程中,需要引入缺失值時使用的替代值
limit 前向或後向填充時的最大填充量
tolerance 向前後向後填充時,填充不準確匹配項的最大間距(絕對值距離)
level 在MultiIndex的指定級別上匹配簡單索引,否則選取其子集
copy 默認爲True,無論如何都複製,如果爲False,則新舊相等就不復制
  • DataFrame索引選項
類型 說明
df[val] 從DataFrame選取單列或一組列:在特殊情況下比較便利:布爾型數組(過濾行)、切片(行切片)、或布爾型DataFrame(根據條件設置值)
df.loc[val] 通過標籤,選取DataFram的單個行或一組行
df.loc[:, val] 通過標籤,選取單列或子集
df.loc[val1, val2] 通過標籤,同時選取行和列
df.iloc[where] 通過整數位置,從DataFrame選取單個行或行子集
df.iloc[where_i, where_j] 通過整數位置,同時選取行和列
df.at[label_i, label_j] 通過行或列標籤,選取單一的標量
df.iat[i, j] 通過行和列的位置(整數),選取單一的標量
reindex 通標籤選取行或列
get_value, set_value 通過行和列標籤選取單一值
  • 計算函數
方法 說明
average 默認:在相等分組中,爲各個值分配平均排名
min 使用整個分組的最小排名
max 使用整個分組的最大排名
first 按值在原始數據中的出現順序分配排名
dense 類似於min方法,但是排名總是在組間增加1,而不是組中相同的元素數
  • 計算函數中約簡方法的選項
選項 說明
axis 約簡的軸。DataFrame的行用0, 列用1
skipna 排除缺失值,默認值爲True
level 如果軸是層次化索引的(即MultiIndex),則根據level分鐘約簡
  • 描述和彙總統計
方法 說明
count 非NA值得數量
describe 針對Series或各DataFrame列計算彙總統計
min、max 計算最小值和最大值
argmin、argmax 計算能夠獲取到最小值和最大值得索引位置(整數)
idxmin、idxmax 計算能夠獲取到最小值和最大值得索引值
quantile 計算樣本的分位數(0到1)
sum 值的總和
mean 值的平均數
median 值的算術中位數
mad 根據平均值計算評價絕對離差
var 樣本值的方差
std 樣本值的標準差
skew 樣本值的偏度(三階距)
kurt 樣本值的峯度(四階距)
cumsum 樣本值的累計和
cummin、cummax 樣本值的累計最大值和累計最小值
cumprod 樣本值的累計積
diff 計算一階差分(對時間序列很有用)
pct_change 計算百分數變化

數據加載

  • 加載函數
函數 說明
read_csv 從文件、URL、文件型對象中加載帶分隔符的數據。默認分隔符爲逗號
read_table 從文件、URL、文件型對象中加載帶分隔符的數據。默認分隔符爲製表符(’\t’)
read_fwf 讀取定寬格式數據(就是沒有分隔符)
read_clipboard 讀取剪貼板中的數據,可以看做read_table的剪貼板版。再將網頁轉換成表格時很有用
read_excel 從Excel XLS 或XLSX file 讀取表格數據
read_hdf 讀取pandas寫的HDF5文件
read_html 讀取HTML文檔中的所有表格
read_json 讀取JSON(JavaScript Object Notation)字符串中的數據
read_msgpack 二進制格式編碼的pandas數據
read_pickkle 讀取Python pickle格式中存儲的任意對象
read_sas 讀取存儲於SAS系統自定義存儲格式的SAS數據集
read_sql 讀取SQL查詢結果爲pandas的DataFrame
read_stata 讀取Stat文件格式的數據集
read_feather 讀取Feather二進制文件格式
  • read_csv/read_table函數參數
參數 說明
path 表示文件系統位置、URL、文件型對象的字符串
sep或delimiter 用於對行中各字段進行拆分的字符序列或正則表達式
header 用作列名的行號。默認爲0(第一行),如果沒有header行就應該設置爲None
index_col 用作行索引的列編號或列名。可以是單個名稱/數字或由多個名稱/數字組成的列表(層次化索引)
names 用於結果的列名列表,結合header=None
skiprows 需要忽略的行數,或需要跳過的行號列表(從0開始)
na_values 一組用戶替換NA的值
comment 用於將註釋信息從行尾拆分出去的字符(一個或多個)
parse_dates 嘗試將數據解析爲日期,默認爲False。如果爲True,則嘗試解析所有列。此外,還可以指定需要解析的一組列號或列名。如果列表的元素爲列表或元組,就會將多個列組合到一起再進行日期解析工作
keep_date_col 如果連接多列解析日期,則保持參與連接的列。默認爲False
converters 由列號/列名跟函數之間的映射關係組成的字典。例如,{‘foo’:f}會對foo列的所有值應用函數f
dayfirst 當解析有歧義的日期時,將其看做國際格式(例如,7/6/2012 -> June 7,2012)。默認爲False
date_parse 用作解析日期的函數
nrows 需要讀取的行數(從文件開始處算起)
iterator 返回一個TextParser以便逐塊讀取文件
chunksize 文件塊的大小(用於迭代)
skip_footer 需要忽略的行數(從文件末尾處算起)
verbose 打印各種解析器輸出信息,比如“非數值列中缺失值的數量”等
encoding 用於unicode的文本編碼格式。例如,“utf-8”表示用UTF-8編碼的文本
squeeze 如果數據經解析吼僅含一列,則返回Series
thousands 千分位分隔符,如“,”或“.”
  • csv包的CSV語支選項
參數 說明
delimiter 用於分隔字段的單字符串。默認爲“,”
lineterminator 用於寫操作的行結束符,默認爲“\r\n”。讀操作將忽略此選項,它能認出跨平臺的行結束符
quotechar 用於帶有特殊字符(如分隔符)的字段的引用符號。默認爲“"”
quoting 引用約定。可選值包括csv.QUOTE_ALL(引用所有字段)、csv.QUOTE_MINIMAL(只引用帶有諸如分隔符之類特殊字符的字段)、csv.QUOTE_MNNUMERIC以及csv.QUOTE_NON(不引用)。默認是QUOTE_MINIMAL
skipinitialspace 忽略分隔符後面的空白符。默認爲False
doublequote 如果爲True,則雙寫。
escapechar 用於對分隔符進行轉義的字符串。(如果quoting被設置爲csv.QUOTE_NONE的話)。默認禁用

空值處理

  • 缺失數據處理函數
方法 說明
dropna 根據各標籤的值中是否存在缺失數據對軸標籤進行過濾,可通過閾值調節對缺失值的容忍度
fillna 用指定值或插值方法(如ffill或bfill)填充缺失數據
isnull 返回一個含有布爾值的對象,這些布爾值表示哪些值是缺失值/NA,該對象的類型與源類型一樣
notnull isnull的否定式
  • fillna函數參數
參數 說明
value 用於填充缺失值的標量值或字典對象
method 插值方式。如果函數調用時未指定其他參數額話,默認爲“ffill”
axis 待填充的軸,默認axis=0
inplace 修改調用者對象而不產生副本
limit (對於前向和後向填充)可以連續填充的最大數量
  • python內置字符串函數
方法 說明
count 返回子串在字符串中的出現次數(非重疊)
endswith、startswith 如果字符串以某個後綴結尾(以某個前綴開頭),則返回True
join 將字符串用作連接其他字符串序列的分隔符
index 如果在字符串中找到子串,則返回子串第一個字符所在的位置。如果沒有找到,則引發ValueError。
find 如果在字符串中找到子串,則返回第一個發現的子串的第一個字符所在的位置。如果沒有找到,則返回-1
rfind 如果在字符串中找到子串,則返回最後一個發現的子串的第一個字符所在的位置。如果沒有找到,則返回-1
replace 用另一個字符串替換指定子串
strip/rstrip/lstrip 去除空白符(包括換行符)。相當於對各個元素執行x.strip()(以及rstrip/lstrip)。
split 通過指定的分隔符將字符串拆分爲一組子串
lower/upper 分別將字母字符轉換爲小寫或大寫
ljust/rjust 用空格(或其他字符)填充字符串的空白側以返回符合最低寬度的字符串
  • pandas字符串處理函數
方法 說明
cat 實現元素級的字符串連接操作,可指定分隔符
count 返回表示某個字符串是否含有指定模式的布爾型數組
extract 使用帶分組的正則表達式從字符串Series提取一個或多個字符串,結果是一個DataFrame,每組有一列
endswith 相當於對每個元素執行x.endswith(pattern)
startswith 相當於對每個元素執行x.startswith(pattern)
findall 計算各字符串的模式列表
get 獲取各元素的第i個字符
isalnum 相當於內置的str.alnum
isalpha 相當於內置的str.isalpha
isdecimal 相當於內置的str.isdecimal
isdigit 相當於內置的str.isdigit
islower 相當於內置的str.islower
isnumeric 相當於內置的str.isnumeris
isupper 相當於內置的str.isupper
join 根據指定的分隔符將Series中各元素的字符串連接起來
len 計算各字符串的長度
lower,upper 轉換大小寫。相當於對於各個元素執行x.lower()或x.upper()
match 根據指定的正則表達式對各個元素執行re.match,返回匹配的組爲列表
pad 在字符串的左邊、右邊或兩邊添加空白符
center 相當於pad(side=‘both’)
repeat 重複值。例如,s.str.repeat(3)相當於對各個字符串執行x*3
replace 用指定字符串替換找到的模式
slice 對Series中的各個字符串進行子串截取
split 根據分隔符或正則表達式對字符串進行拆分
strip 去除兩邊的空白符,包括新行
rstrip 去除右邊的空白符
lstrip 去除左邊的空白符

數據規整

  • pd.merge()函數
參數 說明
left 參與合併的左側DataFarame
right 參與合併的右側DataFrame
how “inner”、“outer”、“left”、“right”其中之一。默認爲“inner”
on 用於連接的列名。必須存在於左右兩個DataFrame對象中。如果未指定,且其他連接鍵也未指定,則以left和right列名的交集作爲連接鍵
left_on 左側DataFrame中用作連接鍵的列
right_on 右側DataFrame中用作連接鍵的列
sort 根據連接鍵對合並後的數據進行排序,默認爲True。有時在處理大數據集時,禁用該選項可獲得更好的性能
suffixes 字符串值元組,用於追加到重疊列名的末尾,默認爲(’_x’, ‘_y’)。例如,如果左右兩個DataFrame對象都有“data”,則結果中就會出現“data_x”和“data_y”
copy 設置爲False,可以在某些特殊情況下將數據複製到結果數據結構中。默認總是複製。
  • pd.merge()函數how選項
選項 說明
inner 使用兩個表都有的鍵
left 使用左表中所有的鍵
right 使用右表中所有的鍵
outer 使用兩個表中所有的鍵
  • pd.concat函數
參數 說明
objs 參與連接的pandas對象的列表或字典。唯一必須的參數
axis 指明連接的軸向,默認是0
join “inner”、“outer”其中之一,默認爲“outer”。指明其他軸向上的索引是按交集(inner)還是並集(outer)進行合併
join_axes 指明用於其他n-1條軸的索引,不執行並集/交集運算
keys 與連接對象有關的值,用於形成連接軸向上的層次化索引。可以是任意值的列表或數組、元組數據、數組列表(如果將levels設置成多級數組的話)
levels 指定用作層次化索引各級別上的索引,如果設置了keys的話
names 用於創建分層級別的名稱,如果設置了keys和(或)levels的話
verify_integrity 檢查結果對象新軸上的重複情況,如果發現則引發異常。默認(False)允許重複
ignore_index 不保留連接軸上的索引,產生一組新索引range(total_length)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章