《利用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) |