python的應用場景
重複性的東西編寫腳本html
和對於大數據量的操做python
不建議本身在網上找下載,建議下載anaconda,可在清華鏡像裏面下載anaconda,下載安裝以後可在桌面上找到程序image.pngmysql
jupyer Notebook 爲本次學習的經常使用項目,可進行可視化界面操做,分段sql
shift+光標執行
數據庫
目錄
1.數據類型
2.變量
3.三大結構
3.1列表
3.2元組
3.3字典
4.控制流
5.def命名函數
6.Numpy包
7.1 Series
7.2 dataframe
8.數據的篩選
9.數據的聚合
10.多表關聯
11.多重索引
12.文本函數
13.空值&去重
14.apply函數
15.數據透視表
16.連接數據庫數組
1.數據類型:數據結構
數值型,直接輸入能夠進行計算
app
可用type進行數據類型的判斷
函數
返回整除的結果
工具
顯示餘數的結果
int整數直接計算
在python裏面單雙引號基本沒有影響,可是在一段話表示的時候裏面有單引號,整段話兩邊套上雙引號才能識別,都爲單引號系統則識別不了。相反,整句裏面用雙引號,整句的時候則用單引號做爲系統區分。
系統報錯,將單引號改爲雙引號就能夠識別(雙引號爲具體內容的邊界)
邊界用三引號的時候,內容能夠包含單雙引號的。
字符串:字符串一樣不能直接進行計算,可用int轉換成數字進行計算。
bool數組(ture默認爲1,false默認爲0):是能夠進行與數字加減運算的
注意,第一個字母要大寫
None:表明缺失值,不能進行運算(至關於表格內畫斜線的格子) 「」:表明空值
2.變量
對應的叫「常量
a=1
變量=1(不加引號的時候就是變量,中文也能夠,可是不建議用,由於兼容性差)
同時給對個變量賦值:a,b=1,2
3.1列表
num=[1,2,3]
表示數據裏面有1,2,3,能夠對其進行運算
len()
列表裏面有幾個元素
訪問列表裏面有幾個元素:列表名[] 第一個位置是「0」表示
查找sql、增長、更改、刪除
shift+tab
幫助鍵查
insert
(位置,插入內容)插入
apped
(插入內容)在末尾添加內容,可是插入的是惟一的值,不能添加多個因素
變量=變量+[內容1,內容2]添加多個因素能夠此方法
pop
(位置)刪除,直接空的話默認刪除末尾的數字
更改
二維列表的建立
元組
()
元組不能修改,與列表對比
字典
鍵key值value對
在磁盤上佔用空間比較大,查詢效果一直會很快
set()
將列表集合化,至關並集去重
list(set())
將set進行嵌套變成新的列表
if for while
【if】判斷
【while】循環
【for】for i in range(10)
#10表明一個列表
for優勢就是不容易造成死循環
須要1~100之間的數字
換一種寫法,一句等同以上三句的效果
5.def命名函數
」:「
換行縮進表示def內部的函數內容
1~10之間求平方
map()全匹配
免除了定義函數的苦惱
python有不少第三方庫,能夠進行加載使用
加載:import collection
其中collection爲第三方模塊
經常使用包:
特性是用法比較簡單,而且有不少共享的第三方包
進行加載
Python的特色是語法比較簡單,而且有不少能夠共享的第三方包其中今天提到的Numpy和Pandas這兩個包經常使用語統計分析,這兩個包會幫助咱們保證速度的處理上千條數據。
【Numpy包進行加載和使用】
可用type查看數據類型
利用a變量對數組進行賦值
同樣能夠接受與數組同樣的切片,簡單運算
可以進行多維數據結構
注意數據類型的區別「int32「
性價比會相對較高一些(由於是基於Numpy開發的)--操做方面更加習慣,數據框的形式。
進行加載並重命名爲pd:import pandas as pd
其主要有兩個數據結構:
從0開始到4結束,索引
有一些比較高的屬性shift+tab調出查看裏面支持哪些參數
結果區別
索引查找
索引也能夠進行多個值索引,索引是列表表示,因此須要有方括號。
最外面的方括號表明索引方式
裏面的方括號,表明索引的內容一個列表
比較智能的能夠自動補缺
特性:原始的數值類型的內容增長一個字符串,則總體都會變成字符串,數據類型會保證統一。
基礎是一維的近似於數組的結構。
至關於無數的一維疊加起來,支持多形式輸入
經過字典來輸入數據框:
會發現順序改變,是由於字典自己就是無需的
進行一維輸入:會發現,二者不等價,數據結構是不同的
對數據框進行切片,數據類型進行變換
等價代碼df.age,與別的一塊兒寫有可能會報錯,建議用方括號的切片形式
基於行的切片
同時可切多個值
以上主要是些標準的查找
單獨搜索某一值
字符串的更改
針對的是某個行和某個列
某一個特定值的篩選「年齡爲18歲的」
方法1:邏輯判斷
外面的df是提取出來,裏面的df表明的是邏輯判斷。
提取結構就是TRUE的結果內容
多條件的篩選查找
同時知足這兩個條件的,「|」爲並集
方法2:邏輯判斷
iloc和loc查找(可同時知足兩個參數進行切片的)
iloc所在行的數字進行索引,是針對第幾行的
loc是針對標籤進行切片的
(可同時知足兩個參數進行切片的)
df.ix是能夠行和標籤一塊兒使用,可是仍是會報錯,不建議使用。
讀入.csv文件:read.csv
首先把文件放在相同的目錄下面
自己默認讀取就是utf因此讀取會很順暢
若是改爲讀取gbk則會報錯,若是讀取gbk須要進行設置解析編碼
查看前幾行:
查看尾行:df.tail()
查看數據類型依然用:df.info()
還能夠繼續追加篩選過濾條件
1.轉至
表名稱.T,可將表格快速的轉至
2.排序
【values】函數
方法1:排序的依據by="排序依據"
方法2:經過數組也能夠進行排序
df.avg.sort_values()
兩者區別是,若是用數組調,返回的是數組,在數據框裏面調直接返回的是數據框。
ascending=False
改變排序升序爲降序
對字段進行排序:直接把條件加入
列出的表不是根據實際的中文順序進行的,介意的話需建另外一張表格進行調整。
【index】按照索引的排序
【rank】函數
默認順序爲升序排列,添加ascending
參數改成降序
method參數默認爲加權平均,改成min
直接用排序第一個,符合現實使用的習慣。改成first
則排序不考慮並列狀況直接按照順序來進行。
3.查找重複
直接可查出有多少個惟一值
加個count
可直接查找出合計數量
4.描述性統計
5.累計累加
6.分段統計
使用更加適合分段統計的cut函數
pd.cut(df.avg.bins=5)
系統自動分割成5部分
也能夠自定義區間,而後命名
經常使用於用戶分級、消費水平分割等使用場景
7.分位法進行分割統計
分位法函數:.qcut()
x具體的內容例如df.avg
q排名幾等分
retbins是否包含開區間閉區間
precision分割出來的精度
duplicates是否要進行些去重操做
聚合函數:mysql不支持分組排名,則可用此函數groupby
經過for循環可把分組內容打印出來進行查看
三種關聯方法
1.merge根據鍵值,對的是某一列
同名去重不一樣名保留
附加:
修改表的字段名稱可用rename()函數
也可把行名提取出來,而後從0開始查其位置進行更改,再賦值的方法(通常用於只改一個,比較簡單)
col=list(df.columns) col[0]='all' df.columns=col
2.join針對索引進行
針對的是固定的索引例如日期
3.concat堆疊,對應的是對象
兩張表格上下放一塊兒,「暴力組合」
之間是上下拼接,增長函數 .axis=1 進行左右拼接,對不上的默認爲空值。
應用場景:例如1~12月份相同字段的銷售統計的拼接彙總等。
方法1:可用切片
方法2:數據框類型的
不借助groupby進行設置多重索引的方法:set_index
把列變成索引進行排序,輸出可達到整理在一塊兒的效果
反過來把索引變成列,增長函數reset_index()便可
這時後面可直接[]去引用。
pandas裏面預處理函數
需求:想把表格內某一列帶方括號的字段去掉方括號。
思路1:直接進行左右兩邊切掉(不成功,由於操做是針對數組進行的,是針對索引的切片)
思路2:調用.str()
(可行)
例如:.str.count
統計字符串出現的次數
.str.find(「數據」)
從哪一個位置開始統計
.str
都是針對值裏面的字符串進行的操做
需求:繼續把單引號排除
思路1:用空值替換單引號(不可行)
由於replace針對的是表格內具體的某一值進行替換,因此,上面對錶格內字段進行替換並無成功。
思路2:增長.str (可行)
1.空值
對錶賦予空值,及對空值進行再賦值
2.刪除重複元素
去重方法1:
去重方法2:相對更簡單
幫助咱們把一個函數或者自定義函數應用到全部的行或者列裏面進行處理,可大大提升數據分析的效率。
需求示例:
薪資顯示數值後面加上K,例如11.5K
方法1:
用 .str
將浮點數據轉成文本再進行拼接
方法2:
輸入x,輸出的是. str
和k
進行拼接
輸入從position.avg
來
apply的優勢是特別快
方法3:等價方法2(在裏面可加進去簡單的判斷)
方法4:
注意,直接position會直接報錯,由於對象不能針對整個表,其中參數axis默認爲0,是空值對應函數應用到列裏面。須要把它設置爲=1,說明函數設置應用到列,對這一列數組進行操做,指明是x.avvg則可成功。
1.apply聚合(分組)
需求:不一樣城市下面新增排名前5的職位。
分析需求:
①對不一樣城市--分組
②前5---排序
方法1:記住輸入和輸出
數據拆開後再合併
方法2:
經過控制參數,變成升序
agg和apply的區別:agg聚合後針對固定的行和列,apply的靈活性比較高,能夠對數據進行拆分再組合,不涉及行數的變化用agg是能夠的。
agg直接調用方法;
等價於:
比較高級的用法是,能夠同時應用多個函數
能夠處理超大的數據對比Excel透視
首選要考慮「我想要的數據透視表形式是什麼樣子的」
values:具體的哪一個值進行計算
index:按照什麼來進行聚合,例如「city」
columns:列是設什麼樣子的,例如「workyear」
aggfunc:具體造成什麼樣子的值,默認是「mean」
多重索引一樣能夠
調用np,因此要用np.mean等計算方式,直接mean則會報錯
也可在此表格進行繼續接片
其中margins
參數=Ture
是在透視表下面添加彙總項目
dropna=Ture
,就是把一些空值砍掉
透視表的一些高級用法:
需求:只想要對平均薪資進行平均,top進行求和,想要計算values的值是有針對性的。
方法:aggfuns裏面把列表改爲字典
應用場景,對處理大數據量的統計提供很好的工具。
建議用pandas連接數據庫,會比較方便
須要安裝一依賴包
老師在講的時候說新人在安裝依賴包的時候回會遇到些問題,很幸運~我就遇到了~~~
安裝包的時候出現「pip不是內部外部,或其餘可執行的程序」的報錯
方法:須要把環境配置一下,
此電腦-->屬性-->高級-->環境變量-->Path-->把ananconda裏面含有pip程序的兩個文件的位置路徑放進去-->保存-->調用cmd(win+r,輸入cmd)-->成功
1.連接數據庫方式
import pymysql #加載變量
conn=pymysql.connect(
host='localhost', #定義新的變量連接,能夠直接輸入localhost,也能夠直接輸入本地的地址127.0.0.11由於mysql通常都是本地因此這兩種方法都可
user='root', #數據庫用戶名稱
password='12346', #帳號密碼
db='data', #想要連接的數據庫
port=3306, #輸入端口,默認的,若是有變化本身更改便可
charset='utf8' #文本編碼若是是gbk則改爲gbk對應
)
建立後調用一個方法(直接記住)
conn.cursor()
以後能夠用 .execute()
來進行sql語句的輸入
若是須要把全部的結果都執行出來
data=cur.fetchall()
不過會以元組的形式輸出,須要簡單處理一下
進行增刪該查後的結果提交操做可用.conn.commit()
方可提交
打開遊標以後,須要養成好的習慣進行關閉
cur.close()
一樣,數據庫鏈接進行關閉
conn.close()
2.鏈接數據庫方式
pandas在數據庫的應用最關鍵的是sql和con
可直接先把sql語句寫好
要注意的是連接是比較特殊的,新的連接方式 .orm幫助數據讀寫的sqlalchemy
從讀取處處理而後到寫入數據庫的過程:
①讀取表:
若是忘記數據庫中有哪些表的具體名頭能夠用此函數進行查看
reader('show tables')
②處理合並多表格
③按照需求條件,分組彙總,提取部分數值轉換重置成數據框
④查看數據類型是否須要更改
result.info()
⑤寫入數據庫
參數if_exists
指的是他是否存在了='fail'
是默認的,也就是說若是表存在的話,則寫入是失敗的。
把參數修改爲 ='append'
是指插入數據,即表存在的話則是插入數據,表不存在的話則會是新建數據,
參數index
,若是=True
是表明寫入的時候把數據框裏面的索引變成一列進行存儲;通常會更改成=False
不寫入。
返回mysql數據庫查看
會發現新導入的表格的字段類型和以前的不太相符,不是預想的最優形式。
建議在開始作的時候,預先在數據庫中建好,設置好新的表格表頭及類型,而後再進行導入。
而且注意,在python導入運行步驟時候,如不當心執行了屢次,則在數據庫中也會相應的重複增長屢次的數據,因此操做要當心謹慎。
當在數據庫建表的時候字段小於導入字段的時候,python會報錯。
當在數據庫建表的時候字段大於導入字段的時候,python則可正常寫入,在數據庫中可自動匹配爲空。
⑥寫入 .csv