本文目錄一覽:
- 1、python怎麼做數據分析
- 2、Python 數據處理(二十八)—— MultiIndex 分層索引
- 3、Python數據分析筆記#8.2.2 索引上的合併
- 4、Python pandas用法
- 5、python零基礎自學筆記day3(向量和矩陣的索引)
- 6、python 數據挖掘需要用哪些庫和工具
python怎麼做數據分析
鏈接:
提取碼:7234
煉數成金:Python數據分析。Python是一種面向對象、直譯式計算機程序設計語言。也是一種功能強大而完善的通用型語言,已經具有十多年的發展歷史,成熟且穩定。Python 具有腳本語言中最豐富和強大的類庫,足以支持絕大多數日常應用。 Python語法簡捷而清晰,具有豐富和強大的類庫。它常被昵稱為膠水語言,它能夠很輕鬆的把用其他語言製作的各種模塊(尤其是C/C++)輕鬆地聯結在一起。
課程將從Python的基本使用方法開始,一步步講解,從ETL到各種數據分析方法的使用,並結合實例,讓學員能從中借鑒學習。
課程目錄:
Python基礎
Python的概覽——Python的基本介紹、安裝與基本語法、變量類型與運算符
了解Python流程控制——條件、循環語句與其他語句
常用函數——函數的定義與使用方法、主要內置函數的介紹
…..
Python 數據處理(二十八)—— MultiIndex 分層索引
本節將介紹使用多級索引(分層索引)和其他高級索引技巧
分層或多級次索引的存在是非常有意義的,因為它打開了複雜的數據分析和操作的大門,特別是處理高維數據
從本質上講,它允許您在較低維度的數據結構包括 Series(1d) 和 DataFrame(2d) 中存儲和操作任意維度的數據
在本節中,我們將展示分層索引的確切含義,以及如何結合前面介紹的所有 pandas 索引功能使用
在 0.24.0 版本之後, MultiIndex.label 重命名為 MultiIndex.codes 。 MultiIndex.set_labels 重命名為 MultiIndex.set_codes .
MultiIndex 對象是標準 Index 對象的分層模式,它通常在 pandas 對象中存儲軸標籤
你可以把 MultiIndex 看成一個元組數組,其中每個元組都是唯一的。 MultiIndex 有如下創建方式
當傳遞給 Index 構造函數一個元組列表時,它將嘗試返回一個 MultiIndex 。
下面的示例演示了初始化 MultiIndex 的不同方法。
當你想要對兩個可迭代對象中的每個元素進行兩兩配對時,可以使用 MultiIndex.from_product()
您也可以使用 MultiIndex.from_frame() 方法直接從 DataFrame 中構造一個 MultiIndex 。
為了方便起見,你可以直接將數組列表傳遞給 Series 或 DataFrame 的 index 參數來自動構造一個 MultiIndex
所有的 MultiIndex 構造函數都接受一個 name 參數,該參數存儲索引級別的名稱。如果沒有設置,則值為 None
索引可以放在任何軸上,索引的層級也可以隨你設置
這已經簡化了較高層次的索引,使控制台的輸出更容易看清。
注意 ,索引的顯示方式可以通過 pandas.set_options() 中的 multi_sparse 選項來控制。
值得注意的是,將元組用作軸上的原子標籤也是可以的
多索引之所以重要,是因為它允許您執行分組、選擇和重塑操作,我們將在下面以及後續部分中描述這些操作
get_level_values() 方法能夠返回特定級別的標籤向量
分級索引的一個重要特性是,您可以通過標識數據中的子組的部分標籤來選擇數據
部分選擇以一種完全類似於在常規 DataFrame 中選擇列的方式,返回的結果會 “降低” 分層索引的級別
MultiIndex 會保留索引的所有已經定義了的級別,儘管它們實際上可能並沒有被使用。
在對索引進行切片時,您可能會注意到這一點。例如
這樣做的目的是為了避免重新計算級別,以提高切片的性能。如果你只想看某一級別,可以使用 get_level_values() 方法
可以使用 remove_unused_levels() 方法重構 MultiIndex
在具有 MultiIndex 的不同索引對象之間的操作會自動對齊
Series/DataFrames 的 reindex() 方法可以傳入一個 MultiIndex ,甚至可以是一個元組列表或元組數組
Python數據分析筆記#8.2.2 索引上的合併
「目錄」
數據規整:聚合、合併和重塑
Data Wrangling: Join, Combine, and Reshape
——– 數據庫風格的DataFrame合併
——– 索引上的合併
上一篇筆記講的是如何根據DataFrame的列名來鏈接兩個DataFrame對象。
有時候我們要根據DataFrame中的index索引來合併數據。這種情況下,我們可以傳入 left_index=True或right_index=True 或兩個都傳入來說明索引被用作鏈接鍵。
我們先創建兩個DataFrame,指明根據第一個DataFrame的’key’列和第二個DataFrame的index索引來合併數據:
默認的merge方法是求取鏈接鍵的交集,通過傳入how=’outer’可以得到它們的並集:
層次化索引數據的合併
對於層次化索引的數據的合併,我們要以 列表的形式指明用作合併鍵的多個列 。
比如下面我們就指定根據第一個DataFrame的’key1’列和’key2’列以及第二個DataFrame的index索引來合併:
同時使用雙方的索引來合併也沒問題:
join方法
DataFrame還有便捷的實例方法join,它能更方便的實現按索引合併,但要求沒有重疊的列。
我們還可以向join傳入一組DataFrame,類似於concat函數,實現多個DataFrame的合併拼接:
-END-
Python pandas用法
在Python中,pandas是基於NumPy數組構建的,使數據預處理、清洗、分析工作變得更快更簡單。pandas是專門為處理表格和混雜數據設計的,而NumPy更適合處理統一的數值數組數據。
使用下面格式約定,引入pandas包:
pandas有兩個主要數據結構:Series和DataFrame。
Series是一種類似於一維數組的對象,它由 一組數據 (各種NumPy數據類型)以及一組與之相關的 數據標籤(即索引) 組成,即index和values兩部分,可以通過索引的方式選取Series中的單個或一組值。
pd.Series(list,index=[ ]) ,第二個參數是Series中數據的索引,可以省略。
Series類型索引、切片、運算的操作類似於ndarray,同樣的類似Python字典類型的操作,包括保留字in操作、使用.get()方法。
Series和ndarray之間的主要區別在於Series之間的操作會根據索引自動對齊數據。
DataFrame是一個表格型的數據類型,每列值類型可以不同,是最常用的pandas對象。DataFrame既有行索引也有列索引,它可以被看做由Series組成的字典(共用同一個索引)。DataFrame中的數據是以一個或多個二維塊存放的(而不是列表、字典或別的一維數據結構)。
pd.DataFrame(data,columns = [ ],index = [ ]) :columns和index為指定的列、行索引,並按照順序排列。
如果創建時指定了columns和index索引,則按照索引順序排列,並且如果傳入的列在數據中找不到,就會在結果中產生缺失值:
數據索引 :Series和DataFrame的索引是Index類型,Index對象是不可修改,可通過索引值或索引標籤獲取目標數據,也可通過索引使序列或數據框的計算、操作實現自動化對齊。索引類型index的常用方法:
重新索引 :能夠改變、重排Series和DataFrame索引,會創建一個新對象,如果某個索引值當前不存在,就引入缺失值。
df.reindex(index, columns ,fill_value, method, limit, copy ) :index/columns為新的行列自定義索引;fill_value為用於填充缺失位置的值;method為填充方法,ffill當前值向前填充,bfill向後填充;limit為最大填充量;copy 默認True,生成新的對象,False時,新舊相等不複製。
刪除指定索引 :默認返回的是一個新對象。
.drop() :能夠刪除Series和DataFrame指定行或列索引。
刪除一行或者一列時,用單引號指定索引,刪除多行時用列表指定索引。
如果刪除的是列索引,需要增加axis=1或axis=’columns’作為參數。
增加inplace=True作為參數,可以就地修改對象,不會返回新的對象。
在pandas中,有多個方法可以選取和重新組合數據。對於DataFrame,表5-4進行了總結
適用於Series和DataFrame的基本統計分析函數 :傳入axis=’columns’或axis=1將會按行進行運算。
.describe() :針對各列的多個統計匯總,用統計學指標快速描述數據的概要。
.sum() :計算各列數據的和
.count() :非NaN值的數量
.mean( )/.median() :計算數據的算術平均值、算術中位數
.var()/.std() :計算數據的方差、標準差
.corr()/.cov() :計算相關係數矩陣、協方差矩陣,是通過參數對計算出來的。Series的corr方法用於計算兩個Series中重疊的、非NA的、按索引對齊的值的相關係數。DataFrame的corr和cov方法將以DataFrame的形式分別返回完整的相關係數或協方差矩陣。
.corrwith() :利用DataFrame的corrwith方法,可以計算其列或行跟另一個Series或DataFrame之間的相關係數。傳入一個Series將會返回一個相關係數值Series(針對各列進行計算),傳入一個DataFrame則會計算按列名配對的相關係數。
.min()/.max() :計算數據的最小值、最大值
.diff() :計算一階差分,對時間序列很有效
.mode() :計算眾數,返回頻數最高的那(幾)個
.mean() :計算均值
.quantile() :計算分位數(0到1)
.isin() :用於判斷矢量化集合的成員資格,可用於過濾Series中或DataFrame列中數據的子集
適用於Series的基本統計分析函數,DataFrame[列名]返回的是一個Series類型。
.unique() :返回一個Series中的唯一值組成的數組。
.value_counts() :計算一個Series中各值出現的頻率。
.argmin()/.argmax() :計算數據最大值、最小值所在位置的索引位置(自動索引)
.idxmin()/.idxmax() :計算數據最大值、最小值所在位置的索引(自定義索引)
pandas提供了一些用於將表格型數據讀取為DataFrame對象的函數。下表對它們進行了總結,其中read_csv()、read_table()、to_csv()是用得最多的。
在數據分析和建模的過程中,相當多的時間要用在數據準備上:加載、清理、轉換以及重塑。
在許多數據分析工作中,缺失數據是經常發生的。對於數值數據,pandas使用浮點值NaN(np.nan)表示缺失數據,也可將缺失值表示為NA(Python內置的None值)。
替換值
.replace(old, new) :用新的數據替換老的數據,如果希望一次性替換多個值,old和new可以是列表。默認會返回一個新的對象,傳入inplace=True可以對現有對象進行就地修改。
刪除重複數據
利用函數或字典進行數據轉換
df.head():查詢數據的前五行
df.tail():查詢數據的末尾5行
pandas.cut()
pandas.qcut() 基於分位數的離散化函數。基於秩或基於樣本分位數將變量離散化為等大小桶。
pandas.date_range() 返回一個時間索引
df.apply() 沿相應軸應用函數
Series.value_counts() 返回不同數據的計數值
df.aggregate()
df.reset_index() 重新設置index,參數drop = True時會丟棄原來的索引,設置新的從0開始的索引。常與groupby()一起用
numpy.zeros()
python零基礎自學筆記day3(向量和矩陣的索引)
1.什麼是索引?
【1】表示引用向量或者矩陣中的一個數
2.什麼是向量的索引?
引用向量中具體的某幾個數例如:
[1].給出a向量,a=np.arrary(0,1,2,3,4,5,6,7,8,9)
[2].引用a向量中0-8的數並打印出來:print(a[0:9])
[3].把3後面的數都打印出來:print(a[3:])
[4].把3到最後倒數第二個數都打印出來:print(a[3:-1])//註:其中-1表示的是至倒數第一 個 數,但不能用-0,這樣則表示無效
[5].把3前面的數全部打印出來:print(a[:3])
2.注意事項:[1].0:9表示的是比9小的數,而不包括9
3.什麼是矩陣的索引?
[1].給出矩陣b,在已經給出a向量的前提下,我們對a進行重塑:b=a.reshape(5,2)得到一個五行兩列的矩陣按照0123456789的順序排列下來
[2].如果想取矩陣中的某個元素–按照幾行幾列的方法例如:print(b[2,3])這裡得到的就是2行3列的一個元素
[3].如果想要得到某一行的元素:print(b[3,:])表示取到第4行的元素
[4].如果想要得到某一列的元素:print(b[:,1])表示取到第2列的元素
python 數據挖掘需要用哪些庫和工具
1、Numpy
Numpy是Python科學計算的基礎包,它提供了很多功能:快速高效的多維數組對象ndarray、用於對數組執行元素級計算以及直接對數組執行數學運算的函數、用於讀寫硬盤上基於數組的數據集的工具、線性代數運算、傅里葉變換以及隨機數生成等。NumPy在數據分析方面還有另外一個主要作用,即作為在算法和庫之間傳遞數據的容器。
2、Pandas
Pandas提供了快速便捷處理結構化數據的大量數據結構和函數。自從2010年出現以來,它助使Python成為強大而高效的數據分析環境。其中用得最多的Pandas對象是DataFrame,它是一個面向列的二維表結構,另一個是Series,一個一維的標籤化數組對象。Pandas兼具Numpy高性能的數組計算功能以及電子表格和關係型數據庫靈活的數據處理功能。還提供了複雜精細的索引功能,能更加便捷地完成重塑、切片和切塊、聚合以及選取數據子集等操作。
3、matplotlib
matplotlib是最流行的用於繪製圖表和其他二維數據可視化的Python庫。它最初由John
D.Hunter(JDH)創建,目前由一個龐大的開發團隊維護。它非常適合創建出版物上用的圖表。雖然還有其他的Python可視化庫,但matplotlib應用最為廣泛。
4、SciPy
SciPy是一組專門解決科學計算中各種標準問題域的包的集合,它與Numpy結合使用,便形成了一個相當完備和成熟的計算平台,可以處理多種傳統的科學計算問題。
5、scikit-learn
2010年誕生以來,scikit-learn成為了Python通用機器學習工具包。它的子模塊包括:分類、回歸、聚類、降維、選型、預處理等。與pandas、statsmodels和IPython一起,scikit-learn對於Python成為高效數據科學編程語言起到了關鍵作用。
6、statsmodels
statsmodels是一個統計分析包,起源於斯坦福大學統計學教授,他設計了多種流行於R語言的回歸分析模型。Skipper Seabold和Josef
Perktold在2010年正式創建了statsmodels項目,隨後匯聚了大量的使用者和貢獻者。與scikit-learn比較,statsmodels包含經典統計學和經濟計量學的算法。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/309495.html