A. python數據分析與應用-Python數據分析與應用 pdf 內部全資料版
給大家帶來的一篇關於Python數據相關的電子書資源,介紹了關於Python方面的內容,本書是由人民郵電出版社出版,格式為PDF,資源大小281 MB,黃紅梅 張良均編寫,目前豆瓣、亞馬遜、當當、京東等電子書綜合評分為:7.8。
內容介紹
目錄
第1章Python數據分析概述1
任務1.1認識數據分析1
1.1.1掌握數據分析的概念2
1.1.2掌握數據分析的流程2
1.1.3了解數據分析應用場景4
任務1.2熟悉Python數據分析的工具5
1.2.1了解數據分析常用工具6
1.2.2了解Python數據分析的優勢7
1.2.3了解Python數據分析常用類庫7
任務1.3安裝Python的Anaconda發行版9
1.3.1了解Python的Anaconda發行版9
1.3.2在Windows系統中安裝Anaconda9
1.3.3在Linux系統中安裝Anaconda12
任務1.4掌握Jupyter Notebook常用功能14
1.4.1掌握Jupyter Notebook的基本功能14
1.4.2掌握Jupyter Notebook的高 級功能16
小結19
課後習題19
第2章NumPy數值計算基礎21
任務2.1掌握NumPy數組對象ndarray21
2.1.1創建數組對象21
2.1.2生成隨機數27
2.1.3通過索引訪問數組29
2.1.4變換數組的形態31
任務2.2掌握NumPy矩陣與通用函數34
2.2.1創建NumPy矩陣34
2.2.2掌握ufunc函數37
任務2.3利用NumPy進行統計分析41
2.3.1讀/寫文件41
2.3.2使用函數進行簡單的統計分析44
2.3.3任務實現48
小結50
實訓50
實訓1創建數組並進行運算50
實訓2創建一個國際象棋的棋盤50
課後習題51
第3章Matplotlib數據可視化基礎52
任務3.1掌握繪圖基礎語法與常用參數52
3.1.1掌握pyplot基礎語法53
3.1.2設置pyplot的動態rc參數56
任務3.2分析特徵間的關系59
3.2.1繪制散點圖59
3.2.2繪制折線圖62
3.2.3任務實現65
任務3.3分析特徵內部數據分布與分散狀況68
3.3.1繪制直方圖68
3.3.2繪制餅圖70
3.3.3繪制箱線圖71
3.3.4任務實現73
小結77
實訓78
實訓1分析1996 2015年人口數據特徵間的關系78
實訓2分析1996 2015年人口數據各個特徵的分布與分散狀況78
課後習題79
第4章pandas統計分析基礎80
任務4.1讀/寫不同數據源的數據80
4.1.1讀/寫資料庫數據80
4.1.2讀/寫文本文件83
4.1.3讀/寫Excel文件87
4.1.4任務實現88
任務4.2掌握DataFrame的常用操作89
4.2.1查看DataFrame的常用屬性89
4.2.2查改增刪DataFrame數據91
4.2.3描述分析DataFrame數據101
4.2.4任務實現104
任務4.3轉換與處理時間序列數據107
4.3.1轉換字元串時間為標准時間107
4.3.2提取時間序列數據信息109
4.3.3加減時間數據110
4.3.4任務實現111
任務4.4使用分組聚合進行組內計算113
4.4.1使用groupby方法拆分數據114
4.4.2使用agg方法聚合數據116
4.4.3使用apply方法聚合數據119
4.4.4使用transform方法聚合數據121
4.4.5任務實現121
任務4.5創建透視表與交叉表123
4.5.1使用pivot_table函數創建透視表123
4.5.2使用crosstab函數創建交叉表127
4.5.3任務實現128
小結130
實訓130
實訓1讀取並查看P2P網路貸款數據主表的基本信息130
實訓2提取用戶信息更新表和登錄信息表的時間信息130
實訓3使用分組聚合方法進一步分析用戶信息更新表和登錄信息表131
實訓4對用戶信息更新表和登錄信息表進行長寬表轉換131
課後習題131
第5章使用pandas進行數據預處理133
任務5.1合並數據133
5.1.1堆疊合並數據133
5.1.2主鍵合並數據136
5.1.3重疊合並數據139
5.1.4任務實現140
任務5.2清洗數據141
5.2.1檢測與處理重復值141
5.2.2檢測與處理缺失值146
5.2.3檢測與處理異常值149
5.2.4任務實現152
任務5.3標准化數據154
5.3.1離差標准化數據154
5.3.2標准差標准化數據155
5.3.3小數定標標准化數據156
5.3.4任務實現157
任務5.4轉換數據158
5.4.1啞變數處理類別型數據158
5.4.2離散化連續型數據160
5.4.3任務實現162
小結163
實訓164
實訓1插補用戶用電量數據缺失值164
實訓2合並線損、用電量趨勢與線路告警數據164
實訓3標准化建模專家樣本數據164
課後習題165
第6章使用scikit-learn構建模型167
任務6.1使用sklearn轉換器處理數據167
6.1.1載入datasets模塊中的數據集167
6.1.2將數據集劃分為訓練集和測試集170
6.1.3使用sklearn轉換器進行數據預處理與降維172
6.1.4任務實現174
任務6.2構建並評價聚類模型176
6.2.1使用sklearn估計器構建聚類模型176
6.2.2評價聚類模型179
6.2.3任務實現182
任務6.3構建並評價分類模型183
6.3.1使用sklearn估計器構建分類模型183
6.3.2評價分類模型186
6.3.3任務實現188
任務6.4構建並評價回歸模型190
6.4.1使用sklearn估計器構建線性回歸模型190
6.4.2評價回歸模型193
6.4.3任務實現194
小結196
實訓196
實訓1使用sklearn處理wine和wine_quality數據集196
實訓2構建基於wine數據集的K-Means聚類模型196
實訓3構建基於wine數據集的SVM分類模型197
實訓4構建基於wine_quality數據集的回歸模型197
課後習題198
第7章航空公司客戶價值分析199
任務7.1了解航空公司現狀與客戶價值分析199
7.1.1了解航空公司現狀200
7.1.2認識客戶價值分析201
7.1.3熟悉航空客戶價值分析的步驟與流程201
任務7.2預處理航空客戶數據202
7.2.1處理數據缺失值與異常值202
7.2.2構建航空客戶價值分析關鍵特徵202
7.2.3標准化LRFMC模型的5個特徵206
7.2.4任務實現207
任務7.3使用K-Means演算法進行客戶分群209
7.3.1了解K-Means聚類演算法209
7.3.2分析聚類結果210
7.3.3模型應用213
7.3.4任務實現214
小結215
實訓215
實訓1處理信用卡數據異常值215
實訓2構造信用卡客戶風險評價關鍵特徵217
實訓3構建K-Means聚類模型218
課後習題218
第8章財政收入預測分析220
任務8.1了解財政收入預測的背景與方法220
8.1.1分析財政收入預測背景220
8.1.2了解財政收入預測的方法222
8.1.3熟悉財政收入預測的步驟與流程223
任務8.2分析財政收入數據特徵的相關性223
8.2.1了解相關性分析223
8.2.2分析計算結果224
8.2.3任務實現225
任務8.3使用Lasso回歸選取財政收入預測的關鍵特徵225
8.3.1了解Lasso回歸方法226
8.3.2分析Lasso回歸結果227
8.3.3任務實現227
任務8.4使用灰色預測和SVR構建財政收入預測模型228
8.4.1了解灰色預測演算法228
8.4.2了解SVR演算法229
8.4.3分析預測結果232
8.4.4任務實現234
小結236
實訓236
實訓1求取企業所得稅各特徵間的相關系數236
實訓2選取企業所得稅預測關鍵特徵237
實訓3構建企業所得稅預測模型237
課後習題237
第9章家用熱水器用戶行為分析與事件識別239
任務9.1了解家用熱水器用戶行為分析的背景與步驟239
9.1.1分析家用熱水器行業現狀240
9.1.2了解熱水器採集數據基本情況240
9.1.3熟悉家用熱水器用戶行為分析的步驟與流程241
任務9.2預處理熱水器用戶用水數據242
9.2.1刪除冗餘特徵242
9.2.2劃分用水事件243
9.2.3確定單次用水事件時長閾值244
9.2.4任務實現246
任務9.3構建用水行為特徵並篩選用水事件247
9.3.1構建用水時長與頻率特徵248
9.3.2構建用水量與波動特徵249
9.3.3篩選候選洗浴事件250
9.3.4任務實現251
任務9.4構建行為事件分析的BP神經網路模型255
9.4.1了解BP神經網路演算法原理255
9.4.2構建模型259
9.4.3評估模型260
9.4.4任務實現260
小結263
實訓263
實訓1清洗運營商客戶數據263
實訓2篩選客戶運營商數據264
實訓3構建神經網路預測模型265
課後習題265
附錄A267
附錄B270
參考文獻295
學習筆記
Jupyter Notebook(此前被稱為 IPython notebook)是一個互動式筆記本,支持運行 40 多種編程語言。 Jupyter Notebook 的本質是一個 Web 應用程序,便於創建和共享文學化程序文檔,支持實時代碼,數學方程,可視化和 markdown。 用途包括:數據清理和轉換,數值模擬,統計建模,機器學習等等 。 定義 (推薦學習:Python視頻教程) 用戶可以通過電子郵件,Dropbox,GitHub 和 Jupyter Notebook Viewer,將 Jupyter Notebook 分享給其他人。 在Jupyter Notebook 中,代碼可以實時的生成圖像,視頻,LaTeX和JavaScript。 使用 數據挖掘領域中最熱門的比賽 Kaggle 里的資料都是Jupyter 格式 。 架構 Jupyter組件 Jupyter包含以下組件: Jupyter Notebook 和 ……
本文實例講述了Python實現的微信好友數據分析功能。分享給大家供大家參考,具體如下: 這里主要利用python對個人微信好友進行分析並把結果輸出到一個html文檔當中,主要用到的python包為 itchat , pandas , pyecharts 等 1、安裝itchat 微信的python sdk,用來獲取個人好友關系。獲取的代碼 如下: import itchatimport pandas as pdfrom pyecharts import Geo, Baritchat.login()friends = itchat.get_friends(update=True)[0:]def User2dict(User): User_dict = {} User_dict["NickName"] = User["NickName"] if User["NickName"] else "NaN" User_dict["City"] = User["City"] if User["City"] else "NaN" User_dict["Sex"] = User["Sex"] if User["Sex"] else 0 User_dict["Signature"] = User["Signature"] if User["Signature"] else "NaN" ……
基於微信開放的個人號介面python庫itchat,實現對微信好友的獲取,並對省份、性別、微信簽名做數據分析。 效果: 直接上代碼,建三個空文本文件stopwords.txt,newdit.txt、unionWords.txt,下載字體simhei.ttf或刪除字體要求的代碼,就可以直接運行。 #wxfriends.py 2018-07-09import itchatimport sysimport pandas as pdimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimHei']#繪圖時可以顯示中文plt.rcParams['axes.unicode_minus']=False#繪圖時可以顯示中文import jiemport jieba.posseg as psegfrom scipy.misc import imreadfrom wordcloud import WordCloudfrom os import path#解決編碼問題non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd) #獲取好友信息def getFriends():……
Python數據分析之雙色球基於線性回歸演算法預測下期中獎結果示例
本文實例講述了Python數據分析之雙色球基於線性回歸演算法預測下期中獎結果。分享給大家供大家參考,具體如下: 前面講述了關於雙色球的各種演算法,這里將進行下期雙色球號碼的預測,想想有些小激動啊。 代碼中使用了線性回歸演算法,這個場景使用這個演算法,預測效果一般,各位可以考慮使用其他演算法嘗試結果。 發現之前有很多代碼都是重復的工作,為了讓代碼看的更優雅,定義了函數,去調用,頓時高大上了 #!/usr/bin/python# -*- coding:UTF-8 -*-#導入需要的包import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport operatorfrom sklearn import datasets,linear_modelfrom sklearn.linear_model import LogisticRegression#讀取文件d……
以上就是本次介紹的Python數據電子書的全部相關內容,希望我們整理的資源能夠幫助到大家,感謝大家對鬼鬼的支持。
注·獲取方式:私信(666)
B. 利用Python進行數據分析筆記:3.1數據結構
元組是一種固定長度、不可變的Python對象序列。創建元組最簡單的辦法是用逗號分隔序列值:
tuple 函數將任意序列或迭代器轉換為元組:
中括弧 [] 可以獲取元組的元素, Python中序列索引從0開始 :
元組一旦創建,各個位置上的對象是無法被修改的,如果元組的一個對象是可變的,例如列表,你可以在它內部進行修改:
可以使用 + 號連接元組來生成更長的元組:
元組乘以整數,則會和列表一樣,生成含有多份拷貝的元組:
將元組型的表達式賦值給變數,Python會對等號右邊的值進行拆包:
拆包的一個常用場景就是遍歷元組或列表組成的序列:
*rest 用於在函數調用時獲取任意長度的位置參數列表:
count 用於計量某個數值在元組中出現的次數:
列表的長度可變,內容可以修改。可以使用 [] 或者 list 類型函數來定義列表:
append 方法將元素添加到列表尾部:
insert 方法可以將元素插入到指定列表位置:
( 插入位置范圍在0到列表長度之間 )
pop 是 insert 的反操作,將特定位置的元素移除並返回:
remove 方法會定位第一個符合要求的值並移除它:
in 關鍵字可以檢查一個值是否在列表中;
not in 表示不在:
+ 號可以連接兩個列表:
extend 方法可以向該列表添加多個元素:
使用 extend 將元素添加到已經存在的列表是更好的方式,比 + 快。
sort 方法可以對列表進行排序:
key 可以傳遞一個用於生成排序值的函數,例如通過字元串的長度進行排序:
bisect.bisect 找到元素應當被插入的位置,返回位置信息
bisect.insort 將元素插入到已排序列表的相應位置保持序列排序
bisect 模塊的函數並不會檢查列表是否已經排序,因此對未排序列表使用bisect不會報錯,但是可能導致不正確結果
切片符號可以對大多數序列類型選取子集,基本形式是 [start:stop]
起始位置start索引包含,結束位置stop索引不包含
切片還可以將序列賦值給變數:
start和stop可以省略,默認傳入起始位置或結束位置,負索引可以從序列尾部進行索引:
步進值 step 可以在第二個冒號後面使用, 意思是每隔多少個數取一個值:
對列表或元組進行翻轉時,一種很聰明的用法時向步進值傳值-1:
dict(字典)可能是Python內建數據結構中最重要的,它更為常用的名字是 哈希表 或者 關聯數組 。
字典是鍵值對集合,其中鍵和值都是Python對象。
{} 是創建字典的一種方式,字典中用逗號將鍵值對分隔:
你可以訪問、插入或設置字典中的元素,:
in 檢查字典是否含有一個鍵:
del 或 pop 方法刪除值, pop 方法會在刪除的同時返回被刪的值,並刪除鍵:
update 方法將兩個字典合並:
update方法改變了字典元素位置,對於字典中已經存在的鍵,如果傳給update方法的數據也含有相同的鍵,則它的值將會被覆蓋。
字典的值可以是任何Python對象,但鍵必須是不可變的對象,比如標量類型(整數、浮點數、字元串)或元組(且元組內對象也必須是不可變對象)。
通過 hash 函數可以檢查一個對象是否可以哈希化(即是否可以用作字典的鍵):
集合是一種無序且元素唯一的容器。
set 函數或者是用字面值集與大括弧,創建集合:
union 方法或 | 二元操作符獲得兩個集合的聯合即兩個集合中不同元素的並集:
intersection 方法或 & 操作符獲得交集即兩個集合中同時包含的元素:
常用的集合方法列表:
和字典類似,集合的元素必須是不可變的。如果想要包含列表型的元素,必須先轉換為元組:
C. 利用Python進行數據分析-讀書筆記(3)
pandas專門為處理表格和混雜數據設計
import pandas as pd
from pandas import Series,DataFrame
Series 類似於一維數組+索引
data = pd.Series([1,2,3,4,5]) 生成Series數據
data.values data.index
pd.Series([1,2],index = ['a','b']) 設置索引
data['a'] 通過索引選取Series中單個或一組值
data[data%2==0] 進行類似numpy數組的運算index仍會保留
'a' in data
pd.Series(python字典) 可以通過python字典創建Series
可以通過設置index改變Series元素順序
缺失值用NaN表示
pd.isnull(data) 檢測缺失數據
pd.notnull
data1 + data2 可以根據索引自動對齊數據進行運算,類似join操作
data.name data.index.name 可賦值
index可以通過賦值方式修改
pd.DataFrame(XXX)傳入元素為等長列表或np數組組成的字典可以生成DataFrame數據,字典key值為列名
frame.head() 前五行
pd.DataFrame(XXX, columns = [xxx], index = [xxxxx]) 可能產生NaN
frame['a'] 取列名為a的一列數據 等價於 frame.a(此時a需要是合理的變數名) 可以以列表形式取多列數據 返回的Series序列索引與原DataFrame相同
frame.loc[0] 行選取
可以用一個Series/值對某列賦值,需要長度相等
對不存在的列賦值可創建新列
del frame[列名] 刪除列
通過索引方式返回數據視圖,修改此返回數據也會影響源數據,Series.()可以創建副本
嵌套字典傳給DataFrame,外層字典的鍵作為列名,內層鍵作為行索引
frame.T 轉置
frame.reindex(新索引列表) 根據新索引重排,若索引值當前不存在則NaN
列可以用columns關鍵字重新索引
obj3 = pd.Series(['blue', 'purple', 'yellow'], index=[0, 2, 4])
obj3.reindex(range(6), method='ffill') ffill實現前向值填充
reindex可以修改(行)索引和列。只傳遞一個序列時,會重新索引結果的行,列可以用columns關鍵字重新索引
Series索引
series(索引列表/數值范圍切片) 選取對應元素
D. 可以讓你快速用Python進行數據分析的10個小技巧
一些小提示和小技巧可能是非常有用的,特別是在編程領域。有時候使用一點點黑客技術,既可以節省時間,還可能挽救「生命」。
一個小小的快捷方式或附加組件有時真是天賜之物,並且可以成為真正的生產力助推器。所以,這里有一些小提示和小技巧,有些可能是新的,但我相信在下一個數據分析項目中會讓你非常方便。
Pandas中數據框數據的Profiling過程
Profiling(分析器)是一個幫助我們理解數據的過程,而Pandas Profiling是一個Python包,它可以簡單快速地對Pandas 的數據框數據進行 探索 性數據分析。
Pandas中df.describe()和df.info()函數可以實現EDA過程第一步。但是,它們只提供了對數據非常基本的概述,對於大型數據集沒有太大幫助。 而Pandas中的Profiling功能簡單通過一行代碼就能顯示大量信息,且在互動式HTML報告中也是如此。
對於給定的數據集,Pandas中的profiling包計算了以下統計信息:
由Pandas Profiling包計算出的統計信息包括直方圖、眾數、相關系數、分位數、描述統計量、其他信息——類型、單一變數值、缺失值等。
安裝
用pip安裝或者用conda安裝
pip install pandas-profiling
conda install -c anaconda pandas-profiling
用法
下面代碼是用很久以前的泰坦尼克數據集來演示多功能Python分析器的結果。
#importing the necessary packages
import pandas as pd
import pandas_profiling
df = pd.read_csv('titanic/train.csv')
pandas_profiling.ProfileReport(df)
一行代碼就能實現在Jupyter Notebook中顯示完整的數據分析報告,該報告非常詳細,且包含了必要的圖表信息。
還可以使用以下代碼將報告導出到互動式HTML文件中。
profile = pandas_profiling.ProfileReport(df)
profile.to_file(outputfile="Titanic data profiling.html")
Pandas實現互動式作圖
Pandas有一個內置的.plot()函數作為DataFrame類的一部分。但是,使用此功能呈現的可視化不是互動式的,這使得它沒那麼吸引人。同樣,使用pandas.DataFrame.plot()函數繪制圖表也不能實現交互。 如果我們需要在不對代碼進行重大修改的情況下用Pandas繪制互動式圖表怎麼辦呢?這個時候就可以用Cufflinks庫來實現。
Cufflinks庫可以將有強大功能的plotly和擁有靈活性的pandas結合在一起,非常便於繪圖。下面就來看在pandas中如何安裝和使用Cufflinks庫。
安裝
pip install plotly
# Plotly is a pre-requisite before installing cufflinks
pip install cufflinks
用法
#importing Pandas
import pandas as pd
#importing plotly and cufflinks in offline mode
import cufflinks as cf
import plotly.offline
cf.go_offline()
cf.set_config_file(offline=False, world_readable=True)
是時候展示泰坦尼克號數據集的魔力了。
df.iplot()
df.iplot() vs df.plot()
右側的可視化顯示了靜態圖表,而左側圖表是互動式的,更詳細,並且所有這些在語法上都沒有任何重大更改。
Magic命令
Magic命令是Jupyter notebook中的一組便捷功能,旨在解決標准數據分析中的一些常見問題。使用命令%lsmagic可以看到所有的可用命令。
所有可用的Magic命令列表
Magic命令有兩種:行magic命令(line magics),以單個%字元為前綴,在單行輸入操作;單元magic命令(cell magics),以雙%%字元為前綴,可以在多行輸入操作。如果設置為1,則不用鍵入%即可調用Magic函數。
接下來看一些在常見數據分析任務中可能用到的命令:
% pastebin
%pastebin將代碼上傳到Pastebin並返回url。Pastebin是一個在線內容託管服務,可以存儲純文本,如源代碼片段,然後通過url可以與其他人共享。事實上,Github gist也類似於pastebin,只是有版本控制。
在file.py文件中寫一個包含以下內容的python腳本,並試著運行看看結果。
#file.py
def foo(x):
return x
在Jupyter Notebook中使用%pastebin生成一個pastebin url。
%matplotlib notebook
函數用於在Jupyter notebook中呈現靜態matplotlib圖。用notebook替換inline,可以輕松獲得可縮放和可調整大小的繪圖。但記得這個函數要在導入matplotlib庫之前調用。
%run
用%run函數在notebook中運行一個python腳本試試。
%run file.py
%%writefile
%% writefile是將單元格內容寫入文件中。以下代碼將腳本寫入名為foo.py的文件並保存在當前目錄中。
%%latex
%%latex函數將單元格內容以LaTeX形式呈現。此函數對於在單元格中編寫數學公式和方程很有用。
查找並解決錯誤
互動式調試器也是一個神奇的功能,我把它單獨定義了一類。如果在運行代碼單元時出現異常,請在新行中鍵入%debug並運行它。 這將打開一個互動式調試環境,它能直接定位到發生異常的位置。還可以檢查程序中分配的變數值,並在此處執行操作。退出調試器單擊q即可。
Printing也有小技巧
如果您想生成美觀的數據結構,pprint是首選。它在列印字典數據或JSON數據時特別有用。接下來看一個使用print和pprint來顯示輸出的示例。
讓你的筆記脫穎而出
我們可以在您的Jupyter notebook中使用警示框/注釋框來突出顯示重要內容或其他需要突出的內容。注釋的顏色取決於指定的警報類型。只需在需要突出顯示的單元格中添加以下任一代碼或所有代碼即可。
藍色警示框:信息提示
<p class="alert alert-block alert-info">
<b>Tip:</b> Use blue boxes (alert-info) for tips and notes.
If it』s a note, you don』t have to include the word 「Note」.
</p>
黃色警示框:警告
<p class="alert alert-block alert-warning">
<b>Example:</b> Yellow Boxes are generally used to include additional examples or mathematical formulas.
</p>
綠色警示框:成功
<p class="alert alert-block alert-success">
Use green box only when necessary like to display links to related content.
</p>
紅色警示框:高危
<p class="alert alert-block alert-danger">
It is good to avoid red boxes but can be used to alert users to not delete some important part of code etc.
</p>
列印單元格所有代碼的輸出結果
假如有一個Jupyter Notebook的單元格,其中包含以下代碼行:
In [1]: 10+5
11+6
Out [1]: 17
單元格的正常屬性是只列印最後一個輸出,而對於其他輸出,我們需要添加print()函數。然而通過在notebook頂部添加以下代碼段可以一次列印所有輸出。
添加代碼後所有的輸出結果就會一個接一個地列印出來。
In [1]: 10+5
11+6
12+7
Out [1]: 15
Out [1]: 17
Out [1]: 19
恢復原始設置:
InteractiveShell.ast_node_interactivity = "last_expr"
使用'i'選項運行python腳本
從命令行運行python腳本的典型方法是:python hello.py。但是,如果在運行相同的腳本時添加-i,例如python -i hello.py,就能提供更多優勢。接下來看看結果如何。
首先,即使程序結束,python也不會退出解釋器。因此,我們可以檢查變數的值和程序中定義的函數的正確性。
其次,我們可以輕松地調用python調試器,因為我們仍然在解釋器中:
import pdb
pdb.pm()
這能定位異常發生的位置,然後我們可以處理異常代碼。
自動評論代碼
Ctrl / Cmd + /自動注釋單元格中的選定行,再次命中組合將取消注釋相同的代碼行。
刪除容易恢復難
你有沒有意外刪除過Jupyter notebook中的單元格?如果答案是肯定的,那麼可以掌握這個撤消刪除操作的快捷方式。
如果您刪除了單元格的內容,可以通過按CTRL / CMD + Z輕松恢復它。
如果需要恢復整個已刪除的單元格,請按ESC + Z或EDIT>撤消刪除單元格。
結論
在本文中,我列出了使用Python和Jupyter notebook時收集的一些小提示。我相信它們會對你有用,能讓你有所收獲,從而實現輕松編碼!
E. Python數據分析筆記#7.3.1 字元串對象方法
「目錄」
數據清洗和准備
Data Cleaning and Prepration
--------> 字元串對象方法
字元串對象方法
Python能夠成為流行的數據處理語言的部分原因是其易於處理字元串和文本。大部分文本運算都直接做成了字元串對象的內置方法。
split方法可以 通過指定分隔符對字元串進行切片 。
例如,以逗號分割的字元串可以用split拆分成數段:
strip可以 去除字元串頭尾指定的字元 ,默認是空白符或換行符。
strip常常與split一起使用:
利用 加法可以將字元串連接起來 :
但這種方式並不實用,畢竟字元串多了就很麻煩。一種更快 更符合Python風格的方式是是使用join方法 ,我們向join方法中傳入一個列表或元組:
檢測子串的最佳方法是利用Python的in關鍵字,還可以使用index和find。
index和find會 查找指定值的首次出現的位置 。
find和index的區別是:若找不到字元串,index將會引發一個 異常 ,find則會返回 -1 :
count可以 返回指定字串的出現次數
replace用於將 指定模式替換為另一個模式 (replace will substitute occurrences of one pattern for another)
再記錄幾個Python內置的字元串方法吧。
startswith和endswith: 若字元串以某個前綴(後綴)開頭,則返回True :
lower和uppe: 分別將字母字元轉換為小寫或大寫 。
ljust和rjust: 用空格(或其他字元)填充字元串的空白側以返回符合最低寬度的字元串 。
這章終於還剩兩節就結束了。
-END-
F. python大數據挖掘系列之基礎知識入門 知識整理(入門教程含源碼)
Python在大數據行業非常火爆近兩年,as a pythonic,所以也得涉足下大數據分析,下面就聊聊它們。
Python數據分析與挖掘技術概述
所謂數據分析,即對已知的數據進行分析,然後提取出一些有價值的信息,比如統計平均數,標准差等信息,數據分析的數據量可能不會太大,而數據挖掘,是指對大量的數據進行分析與挖倔,得到一些未知的,有價值的信息等,比如從網站的用戶和用戶行為中挖掘出用戶的潛在需求信息,從而對網站進行改善等。
數據分析與數據挖掘密不可分,數據挖掘是對數據分析的提升。數據挖掘技術可以幫助我們更好的發現事物之間的規律。所以我們可以利用數據挖掘技術可以幫助我們更好的發現事物之間的規律。比如發掘用戶潛在需求,實現信息的個性化推送,發現疾病與病狀甚至病與葯物之間的規律等。
預先善其事必先利其器
我們首先聊聊數據分析的模塊有哪些:
下面就說說這些模塊的基礎使用。
numpy模塊安裝與使用
安裝:
下載地址是:http://www.lfd.uci.e/~gohlke/pythonlibs/
我這里下載的包是1.11.3版本,地址是:http://www.lfd.uci.e/~gohlke/pythonlibs/f9r7rmd8/numpy-1.11.3+mkl-cp35-cp35m-win_amd64.whl
下載好後,使用pip install "numpy-1.11.3+mkl-cp35-cp35m-win_amd64.whl"
安裝的numpy版本一定要是帶mkl版本的,這樣能夠更好支持numpy
numpy簡單使用
生成隨機數
主要使用numpy下的random方法。
pandas
使用 pip install pandas 即可
直接上代碼:
下面看看pandas輸出的結果, 這一行的數字第幾列,第一列的數字是行數,定位一個通過第一行,第幾列來定位:
常用方法如下:
下面看看pandas對數據的統計,下面就說說每一行的信息
轉置功能:把行數轉換為列數,把列數轉換為行數,如下所示:
通過pandas導入數據
pandas支持多種輸入格式,我這里就簡單羅列日常生活最常用的幾種,對於更多的輸入方式可以查看源碼後者官網。
CSV文件
csv文件導入後顯示輸出的話,是按照csv文件默認的行輸出的,有多少列就輸出多少列,比如我有五列數據,那麼它就在prinit輸出結果的時候,就顯示五列
excel表格
依賴於xlrd模塊,請安裝它。
老樣子,原滋原味的輸出顯示excel本來的結果,只不過在每一行的開頭加上了一個行數
讀取SQL
依賴於PyMySQL,所以需要安裝它。pandas把sql作為輸入的時候,需要制定兩個參數,第一個是sql語句,第二個是sql連接實例。
讀取HTML
依賴於lxml模塊,請安裝它。
對於HTTPS的網頁,依賴於BeautifulSoup4,html5lib模塊。
讀取HTML只會讀取HTML里的表格,也就是只讀取
顯示的是時候是通過python的列表展示,同時添加了行與列的標識
讀取txt文件
輸出顯示的時候同時添加了行與列的標識
scipy
安裝方法是先下載whl格式文件,然後通過pip install 「包名」 安裝。whl包下載地址是:http://www.lfd.uci.e/~gohlke/pythonlibs/f9r7rmd8/scipy-0.18.1-cp35-cp35m-win_amd64.whl
matplotlib 數據可視化分析
我們安裝這個模塊直接使用pip install即可。不需要提前下載whl後通過 pip install安裝。
下面請看代碼:
下面說說修改圖的樣式
關於圖形類型,有下面幾種:
關於顏色,有下面幾種:
關於形狀,有下面幾種:
我們還可以對圖稍作修改,添加一些樣式,下面修改圓點圖為紅色的點,代碼如下:
我們還可以畫虛線圖,代碼如下所示:
還可以給圖添加上標題,x,y軸的標簽,代碼如下所示
直方圖
利用直方圖能夠很好的顯示每一段的數據。下面使用隨機數做一個直方圖。
Y軸為出現的次數,X軸為這個數的值(或者是范圍)
還可以指定直方圖類型通過histtype參數:
圖形區別語言無法描述很詳細,大家可以自信嘗試。
舉個例子:
子圖功能
什麼是子圖功能呢?子圖就是在一個大的畫板裡面能夠顯示多張小圖,每個一小圖為大畫板的子圖。
我們知道生成一個圖是使用plot功能,子圖就是subplog。代碼操作如下:
我們現在可以通過一堆數據來繪圖,根據圖能夠很容易的發現異常。下面我們就通過一個csv文件來實踐下,這個csv文件是某個網站的文章閱讀數與評論數。
先說說這個csv的文件結構,第一列是序號,第二列是每篇文章的URL,第三列每篇文章的閱讀數,第四列是每篇評論數。
我們的需求就是把評論數作為Y軸,閱讀數作為X軸,所以我們需要獲取第三列和第四列的數據。我們知道獲取數據的方法是通過pandas的values方法來獲取某一行的值,在對這一行的值做切片處理,獲取下標為3(閱讀數)和4(評論數)的值,但是,這里只是一行的值,我們需要是這個csv文件下的所有評論數和閱讀數,那怎麼辦?聰明的你會說,我自定義2個列表,我遍歷下這個csv文件,把閱讀數和評論數分別添加到對應的列表裡,這不就行了嘛。呵呵,其實有一個更快捷的方法,那麼就是使用T轉置方法,這樣再通過values方法,就能直接獲取這一評論數和閱讀數了,此時在交給你matplotlib里的pylab方法來作圖,那麼就OK了。了解思路後,那麼就寫吧。
下面看看代碼:
G. Python數據分析(八):農糧組織數據集探索性分析(EDA)
這里我們用 FAO(Food and Agriculture Organization) 組織提供的數據集,練習一下如何利用python進行探索性數據分析。
我們先導入需要用到的包
接下來,載入數據集
看一下數據量,
看一下數據的信息,
我們先來看一下variable,variable_full這兩列的信息,
看一下統計了多少國家,
看一下有多少個時間周期,
看一下時間周期有哪些,
我們看一下某一列某個指標的缺失值的個數,比如variable是total_area時缺失值的個數,
我們通過幾個維度來進行數據的分析:
我們按照上面的處理繼續,現在我們想統計一下對於一個時間周期來說,不同國家在這個周期內的變化情況,
我們也可以按照國家分類,查看某個國家在不同時期的變化,
我們還可以根據屬性,查看不同國家在不同周期內的變化情況,
我們還可以給定國家和指標,查看這個國家在這個指標上的變化情況,
我們還有region(區域)沒有查看,我們來看一下:
通過上圖可以看出,區域太多,不便於觀察,我們可以將一些區域進行合並。減少區域數量有助於模型評估,可以創建一個字典來查找新的,更簡單的區域(亞洲,北美洲,南美洲,大洋洲)
我們來看一下數據變化,
緊接著上面的數據處理,我們重新導入一下包,這次有一些新包,
我們看一下水資源的情況,
通過上圖可以看出只有一小部分國家報告了可利用的水資源總量,這些國家中只有極少數國家擁有最近一段時間的數據,我們將刪除變數,因為這么少的數據點會導致很多問題。
接下來我們看一下全國降雨指數,
全國降雨在2002年以後不再報到,所以我們也刪除這個數據,
我們單獨拿出一個洲來進行分析,舉例南美洲,我們來看一下數據的完整性,
我們也可以指定不同的指標,
接下來,我們使用 pandas_profiling 來對單變數以及多變數之間的關系進行統計一下,
這里我們要計算的是,比如
我們按照 rural_pop 從小到大進行排序,發現的確有幾個國家的農村人口是負數,
人口數目是不可能小於0,所以這說明數據有問題,存在臟數據,如果做分析預測時,要注意將這些臟數據處理一下。
接下來我們看一下偏度,我們規定,
正態分布的偏度應為零,負偏度表示左偏,正偏表示右偏。
偏度計算完後,我們計算一下峰度, 峰度也是一個正態分布,峰度不能為負,只能是正數 ,越大說明越陡峭,
接下來我們看一下,如果數據分布非常不均勻該怎麼辦呢,
上圖是2013-2017年國家總人數的分布,通過上圖我們發現,人口量少於200000(不考慮單位)的國家非常多,人口大於1200000的國家非常少,如果我們需要建模的話,這種數據我們是不能要的。這個時候我們應該怎麼辦呢?
通常,遇到這種情況,使用 log變換 將其變為正常。 對數變換 是數據變換的一種常用方式,數據變換的目的在於使數據的呈現方式接近我們所希望的前提假設,從而更好的進行統計推斷。
接下來,我們用log轉換一下,並看一下它的偏度和峰值,
可以看出偏度下降了很多,減少了傾斜。
可以發現峰度也下降了,接下來我們看一下經過log轉換後的數據分布,
雖然數據還有一些偏度,但是明顯好了很多,呈現的分布也比較標准。
首先我們先來看一下美國的人口總數隨時間的變化,
接下來,我們查看北美洲每個國家人口總數隨著時間的變化,
這個時候我們發現,一些國家由於人口數量本身就少,所以整個圖像顯示的不明顯,我們可以改變一下參照指標,那我們通過什麼標准化?我們可以選擇一個國家的最小、平均、中位數、最大值...或任何其他位置。那我們選擇最小值,這樣我們就能看到每個國家的起始人口上的增長。
我們也可以用熱度圖來展示,用顏色的深淺來比較大小關系,
接下來我們分析一下水資源的分布情況,
我們可以進行一下log轉換,
我們用熱度圖畫一下,
連續值可以畫成散點圖,方便觀看,
我們來看一下隨著季節變化,人均GDP的變化情況,
相關程度:
相關度量兩個變數之間的線性關系的強度,我們可以用相關性來識別變數。
現在我們單獨拿出來一個指標分析是什麼因素與人均GDP的變化有關系,正相關就是積極影響,負相關就是消極影響。
當我們在畫圖的時候也可以考慮一下利用bined設置一下區間,比如說連續值我們可以分成幾個區間進行分析,這里我們以人均GDP的數量來進行分析,我們可以將人均GDP的數據映射到不同的區間,比如人均GDP比較低,比較落後的國家,以及人均GDP比較高,比較發達的國家,這個也是我們經常需要的操作,
做一下log變換,這里是25個bin
我們指定一下分割的標准,
我們還可以看一下人均GDP較低,落後國家的內部數據,下面我們看一下內部數據分布情況,用boxplot進行畫圖,
對於這部分的分布,我們還可以統計看一下其他指標,如下圖所示,我們還可以看一下洪水的統計信息,