日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python爬虫数据分析三剑客:Numpy、pandas、Matplotlib

發布時間:2025/3/20 python 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python爬虫数据分析三剑客:Numpy、pandas、Matplotlib 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、 pandas

pandas簡介

pandas是建立在Numpy基礎上的高效數據分析處理庫,是Python的重要數據分析庫。
pandas提供了眾多的高級函數,極大地簡化了數據處理的流程,尤其是被廣泛地應用于金融領域的數據分析。

pandas主要包括的是:
  • 帶有標簽的數據結構,主要包括序列(Series)和數據框(DataFrame)等
  • 允許簡單索引和多級索引
  • 支持從Excel、CSV等文本格式中文導入數據,以Pytables/HDF5格式高效地讀/寫數據。
  • 整合了對數據集的集合和轉換功能
  • 生成特定類型的數據
pandas的導入:
import pandas as pd from pandas import Series,DataFrame import numpy as np
pandas中的Series

Series是一種類似與一維數組的對象,由下面兩個部分組成:

  • values:一組數據(ndarray類型)
  • index:相關的數據索引標簽

1)Series的創建

兩種創建方式:

(1) 由列表或numpy數組創建

默認索引為0到N-1的整數型索引

  • 還可以通過設置index參數指定索引
#使用列表創建 Series是序列 Series(data=[1,2,3,4,5,6])#結果 0 1 1 2 2 3 3 4 4 5 5 6 dtype: int64 #通過numpy創建Series Series(data=np.random.randint(1,40,size=(5,)),index=['a','d','f','g','t'],name='bobo')

(2) 由字典創建:不能在使用index.但是依然存在默認索引

注意:數據源必須為一維數據

dic = {'語文':150,'數學':150,'英語':150,'理綜':150 } s = Series(data=dic)#查看時s

2)Series的索引和切片

可以使用中括號取單個索引(此時返回的是元素類型),或者中括號里一個列表取多個索引(此時返回的是一個Series類型)。

(1) 顯式索引:

- 使用index中的元素作為索引值 - 使用s.loc[](推薦):注意,loc中括號中放置的一定是顯示索引

注意,此時是閉區間

(2) 隱式索引:

- 使用整數作為索引值 - 使用.iloc[](推薦):iloc中的中括號中必須放置隱式索引

注意,此時是半開區間

列如:

切片:隱式索引切片和顯示索引切片
  • 顯示索引切片:index和loc
  • 隱式索引切片:整數索引值和iloc

3)Series的基本概念

可以把Series看成一個定長的有序字典

向Series增加一行:相當于給字典增加一組鍵值對

可以通過shape,size,index,values等得到series的屬性

可以使用s.head(),tail()分別查看前n個和后n個值

對Series元素進行去重(使用unique)

兩個Series進行相加

  • 當索引沒有對應的值時,可能出現缺失數據顯示NaN(not a number)的情況
  • 使得兩個Series進行相加:索引與之對應的元素會進行算數運算,不對應的就補空

可以使用pd.isnull(),pd.notnull(),或s.isnull(),notnull()函數檢測缺失數據

4)Series的運算

(1) + - * /

(2) add() sub() mul() div() : s1.add(s2,fill_value=0)

(3) Series之間的運算

  • 在運算中自動對齊不同索引的數據
  • 如果索引不對應,則補NaN
pandas中的DataFrame

DataFrame是一個【表格型】的數據結構。DataFrame由按一定順序排列的多列數據組成。設計初衷是將Series的使用場景從一維拓展到多維。DataFrame既有行索引,也有列索引。

  • 行索引:index
  • 列索引:columns
  • 值:values

1)DataFrame的創建

最常用的方法是傳遞一個字典來創建。DataFrame以字典的鍵作為每一【列】的名稱,以字典的值(一個數組)作為每一列。

此外,DataFrame會自動加上每一行的索引。

使用字典創建的DataFrame后,則columns參數將不可被使用。

同Series一樣,若傳入的列與字典的鍵不匹配,則相應的值為NaN。

DataFrame的創建方式:
  • 使用ndarray創建DataFrame

  • 使用ndarray創建DataFrame:創建一個表格用于展示張三,李四,語文,數學,英語的成績

'''遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書!'''dic = {'張三':[77,88,99],'李四':[67,68,69]}df = DataFrame(data=dic,index=['語文','數學','英語'])df

DataFrame屬性:values、columns、index、shape

2)DataFrame的索引

(1) 對列進行索引
- 通過類似字典的方式 df['q'] - 通過屬性的方式 df.q

可以將DataFrame的列獲取為一個Series。返回的Series擁有原DataFrame相同的索引,且name屬性也已經設置好了,就是相應的列名。

修改索引
#修改列索引 df.columns = ['zhangsan','lisi'] df
(2) 對行進行索引
- 使用.loc[]加index來進行行索引 - 使用.iloc[]加整數來進行行索引

同樣返回一個Series,index為原來的columns。

(3) 對元素索引的方法
- 使用列索引 - 使用行索引(iloc[3,1] or loc['C','q']) 行索引在前,列索引在后

切片:

【注意】 直接用中括號時:

  • 索引表示的是列索引
  • 切片表示的是行切片

3)DataFrame的運算

(1) DataFrame之間的運算

同Series一樣:

  • 在運算中自動對齊不同索引的數據
  • 如果索引不對應,則補NaN

處理丟失數據

有兩種丟失數據:

  • None
  • np.nan(NaN)
1. None

None是Python自帶的,其類型為python object。因此,None不能參與到任何計算中。

2. np.nan(NaN)

np.nan是浮點類型,能參與到計算中。但計算的結果總是NaN。

3. pandas中的None與NaN
1) pandas中None與np.nan都視作np.nan
'''遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書!''' #創建DataFrame df = DataFrame(data=np.random.randint(10,50,size=(8,8))) df df.iloc[1,3]=None df.iloc[2,2]=None df.iloc[4,2]=None df.iloc[6,7]=np.nan

2) pandas處理空值操作

  • isnull()

  • notnull()
  • dropna(): 過濾丟失數據

  • fillna(): 填充丟失數據

#一行中要是都有值 也就是 不是空的為True #一行 中只要有一個為none 為空則為False df.notnull().all(axis=1) #1代表行 notnull(all) isnull(any)df.loc[df.notnull().all(axis=1)] #去掉行有值為空的行

df.dropna() 可以選擇過濾的是行還是列(默認為行):axis中0表示行,1表示的列

df.dropna(axis=0) #刪除一行中有空值的行
3) 填充函數 Series/DataFrame
  • fillna():value和method參數

    可以選擇前向填充還是后向填充

df.fillna(method='ffill',axis=1) #向前填充 就是根據前條數據來填充空數據

method 控制填充的方式 bfill(向后填充) ffill(向前填充)

1. 創建多層列索引

1) 隱式構造

最常見的方法是給DataFrame構造函數的index或者columns參數傳遞兩個或更多的數組

2) 顯示構造pd.MultiIndex.from_
  • 使用數組
  • 使用product
'''遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書!''' import numpy as np import pandas as pd from pandas import Series,DataFramecol=pd.MultiIndex.from_product([['qizhong','qimo'],['chinese','math']])#創建DF對象 df = DataFrame(data=np.random.randint(60,120,size=(2,4)),index=['tom','jay'],columns=col) df

二 pandas的拼接操作

pandas的拼接分為兩種:

  • 級聯:pd.concat, pd.append
  • 合并:pd.merge, pd.join
1. 使用pd.concat()級聯
pandas使用pd.concat函數,與np.concatenate函數類似,只是多了一些參數:objs axis=0 keys join='outer' / 'inner':表示的是級聯的方式,outer會將所有的項進行級聯(忽略匹配和不匹配),而inner只會將匹配的項級聯到一起,不匹配的不級聯 ignore_index=False
1)匹配級聯
df1 = DataFrame(data=np.random.randint(0,100,size=(3,3)),index=['a','b','c'],columns=['A','B','C']) df2 = DataFrame(data=np.random.randint(0,100,size=(3,3)),index=['a','d','c'],columns=['A','d','C']) pd.concat((df1,df1),axis=0,join='inner')
2) 不匹配級聯

不匹配指的是級聯的維度的索引不一致。例如縱向級聯時列索引不一致,橫向級聯時行索引不一致

有2種連接方式:

  • 外連接:補NaN(默認模式)
  • 內連接:只連接匹配的項
3) 使用df.append()函數添加

由于在后面級聯的使用非常普遍,因此有一個函數append專門用于在后面添加

2. 使用pd.merge()合并

merge與concat的區別在于,merge需要依據某一共同的列來進行合并

使用pd.merge()合并時,會自動根據兩者相同column名稱的那一列,作為key來進行合并。

注意每一列元素的順序不要求一致

參數:

  • how:out取并集 inner取交集
  • on:當有多列相同的時候,可以使用on來指定使用那一列進行合并,on的值為一個列表
1) 一對一合并

將df1與df2合并

df1 = DataFrame({'employee':['Bob','Jake','Lisa'],'group':['Accounting','Engineering','Engineering'],}) df1df2 = DataFrame({'employee':['Lisa','Bob','Jake'],'hire_date':[2004,2008,2012],}) df2pd.merge(df1,df2,how='outer')
2) 多對一合并
df3 = DataFrame({'employee':['Lisa','Jake'],'group':['Accounting','Engineering'],'hire_date':[2004,2016]}) df3df4 = DataFrame({'group':['Accounting','Engineering','Engineering'],'supervisor':['Carly','Guido','Steve']}) df4pd.merge(df3,df4,how='outer')
3)多對多合并
df5 = DataFrame({'employee':['Bob','Jake','Lisa'],'group':['Accounting','Engineering','Engineering']}) df5df6 = DataFrame({'group':['Engineering','Engineering','HR'],'supervisor':['Carly','Guido','Steve']}) df6 pd.merge(df5,df6,how='outer')

4) key的規范化

  • 當列沖突時,即有多個列名稱相同時,需要使用on=來指定哪一個列作為key,配合suffixes指定沖突列名
  • 當兩張表沒有可進行連接的列時,可使用left_on和right_on手動指定merge中左右兩邊的哪一列列作為連接的列
df1 = DataFrame({'employee':['Jack',"Summer","Steve"],'group':['Accounting','Finance','Marketing']})df2 = DataFrame({'employee':['Jack','Bob',"Jake"],'hire_date':[2003,2009,2012],'group':['Accounting','sell','ceo']})
5) 內合并與外合并:out取并集 inner取交集
  • 內合并:只保留兩者都有的key(默認模式)
  • 外合并 how=‘outer’:補NaN

三 Matplotlib

Matplotlib是一個主要用于繪制二維圖形的Python庫

-能夠繪制出高質量的圖形,并且圖形里面的鑲嵌的文本必需足夠美觀

-能夠和Tex文檔一起輸出

-能夠嵌入到GUI(圖形用戶界面)應用程序中

Matplotlib中的基本圖表包括的元素

  • x軸和y軸 axis
    水平和垂直的軸線
  • x軸和y軸刻度 tick
    刻度標示坐標軸的分隔,包括最小刻度和最大刻度
  • x軸和y軸刻度標簽 tick label
    表示特定坐標軸的值
  • 繪圖區域(坐標系) axes
    實際繪圖的區域
  • 坐標系標題 title
    實際繪圖的區域
  • 軸標簽 xlabel ylabel
    實際繪圖的區域
matplotlib的導入:
import matplotlib.pyplot as plt
包含單條曲線的圖
  • 注意:y,x軸的值必須為數字

簡單的列子:

x=[1,2,3,4,5] y=[2,4,6,8,10] plt.plot(x,y)

[外鏈圖片轉存失敗(img-zZwBHmc5-1566546593187)(file:///C:/Users/MLH/AppData/Roaming/Typora/typora-user-images/1551965523571.png)]

  • 繪制拋物線

    x = np.linspace(-np.pi,np.pi,num=20) y = x**2 plt.plot(x,y)
  • 繪制正弦曲線圖

    x y = np.sin(x) plt.plot(x,y)
包含多個曲線的圖

1、連續調用多次plot函數

plt.plot(x,y) plt.plot(x+2,y+3)

2、也可以在一個plot函數中傳入多對X,Y值,在一個圖中繪制多個曲線

plt.plot(x,y,x+1,y-2)

將多個曲線圖繪制在一個table區域中:對象形式創建表圖

  • a=plt.subplot(row,col,loc) 創建曲線圖
  • a.plot(x,y) 繪制曲線圖
ax1 = plt.subplot(221) ax1.plot(x,y)ax2 = plt.subplot(2,2,2) ax2.plot(x,y)ax3 = plt.subplot(2,2,3) ax3.plot(x,y)ax4 = plt.subplot(2,2,4) ax4.plot(x,y)

網格線 plt.gride(XXX)

參數:

- axis - color:支持十六進制顏色 - linestyle: -- -. : - alpha plt.plot(x,y) plt.grid(axis='both',c='blue')

繪制一個正弦曲線圖,并設置網格

plt.plot(x,y,c='red',alpha=0.7)

坐標軸界限

axis方法:設置x,y軸刻度值的范圍

plt.axis([xmin,xmax,ymin,ymax])

plt.plot(x,y) plt.axis([-6,6,-2,2]) #plt.axis('off') plt.axis('off') 關閉坐標軸

總結

以上是生活随笔為你收集整理的Python爬虫数据分析三剑客:Numpy、pandas、Matplotlib的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: av片大全 | 成人女同av免费观看 | 黄频在线观看 | 97福利在线 | 国产中文视频 | 黄色理论片| 亚洲精品国产精品乱码 | 德国经典free性复古xxxx | 天海翼一二三区 | 精品久久久久久久中文字幕 | 国产无遮挡a片又黄又爽 | 狠狠人妻久久久久久综合 | 无码人妻精品一区二区 | 韩国一区二区三区在线观看 | 美丽的小蜜桃2:美丽人生 | m3u8成人免费视频 | 日本大胆裸体做爰视频 | 国产一区二区视频免费在线观看 | a级在线视频 | 免费成年人视频在线观看 | 少妇精品久久久久久久久久 | 人人入人人 | 最新视频–x99av | 久久综合九色综合欧美狠狠 | 精品国产av无码一区二区三区 | 亚洲h网站 | 国产传媒一区二区 | 成人欧美一区二区三区小说 | mm131美女大尺度私密照尤果 | 爱爱爱爱网站 | 国产成人在线免费观看视频 | 亚洲伦理中文字幕 | 亚洲色图第三页 | 91超碰人人| 日本成人免费在线视频 | 黑人极品ⅴideos精品欧美棵 | 日韩激情视频一区二区 | 另类小说色综合 | 亚洲色图图 | 狠狠涩| 久热最新 | 国产极品视频在线观看 | 伊人青青 | av黄色成人| 国产在线视频二区 | 日韩成人精品视频 | 美女又黄又爽 | 免费看国产片在线观看 | 欧美123区 | 国产黄色片网站 | 久久人妻少妇嫩草av蜜桃 | 综合视频一区 | 91久久久久久久久久久 | 精品国产96亚洲一区二区三区 | 亚洲激情视频小说 | 国产妇女视频 | 免费网站av | 在线黄网站 | 国产三级在线免费 | 伊人一区二区三区 | 丰满人妻一区二区 | 韩日一区二区 | 日韩av一区二区在线播放 | 天天看天天摸 | 香蕉视频成人在线 | 欧美第一页在线 | 欧美天堂在线观看 | 久久免费精品 | 大屁股一区二区三区 | 免费毛片一级 | 日韩成人av一区二区 | 亚洲天堂伊人 | av噜噜色| 女人叫床很黄很污句子 | 久久免费观看视频 | 国产精品呦呦 | 一区二区三区日韩欧美 | 国产伦精品一区二区三区视频网站 | 中文字字幕在线中文乱码电影 | 一区二区成人精品 | 香蕉视频毛片 | 大j8福利视频导航 | 99999视频 | 青青草原影视 | 插久久 | a级黄色片 | 超碰精品| 久久国产精品波多野结衣 | 91手机在线播放 | 超碰五月天| av成人免费在线观看 | av在线超碰| 草比网站 | 林雅儿欧洲留学恋爱日记在线 | 日本少妇高潮抽搐 | 精品免费一区 | 人人妻人人爽一区二区三区 | 大又大又粗又硬又爽少妇毛片 | 欧美黄色一级片视频 |