欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python學(xué)習(xí)教程之Numpy和Pandas的使用

系統(tǒng) 1679 0

前言

本文主要給大家介紹了關(guān)于python中Numpy和Pandas使用的相關(guān)資料,分享出來(lái)供大家參考學(xué)習(xí),下面話(huà)不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。

它們是什么?

NumPy是Python語(yǔ)言的一個(gè)擴(kuò)充程序庫(kù)。支持高級(jí)大量的維度數(shù)組與矩陣運(yùn)算,此外也針對(duì)數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫(kù)。

Pandas是基于NumPy 的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。Pandas 納入了大量庫(kù)和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,提供了高效地操作大型數(shù)據(jù)集所需的工具。Pandas提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。

List、Numpy與Pandas

Numpy與List

相同之處:

  • 都可以用下標(biāo)訪問(wèn)元素,例如a[0]
  • 都可以切片訪問(wèn),例如a[1:3]
  • 都可以使用for循環(huán)進(jìn)行遍歷

不同之處:

  • Numpy之中每個(gè)元素類(lèi)型必須相同;而List中可以混合多個(gè)類(lèi)型元素
  • Numpy使用更方便,封裝了許多函數(shù),例如mean、std、sum、min、max等
  • Numpy可以是多維數(shù)組
  • Numpy用C實(shí)現(xiàn),操作起來(lái)速度更快

Pandas與Numpy

相同之處:

  • 訪問(wèn)元素一樣,可以使用下標(biāo),也可以使用切片訪問(wèn)
  • 可以使用For循環(huán)遍歷
  • 有很多方便的函數(shù),例如mean、std、sum、min、max等
  • 可以進(jìn)行向量運(yùn)算
  • 用C實(shí)現(xiàn),速度更快

不同之處:Pandas擁有Numpy一些沒(méi)有的方法,例如describe函數(shù)。其主要區(qū)別是:Numpy就像增強(qiáng)版的List,而Pandas就像列表和字典的合集,Pandas有索引。

Numpy使用

1、基本操作

            
import numpy as np
#創(chuàng)建Numpy
p1 = np.array([1, 2, 3])
print p1
print p1.dtype
          
            
[1 2 3]
int64
          
            
#求平均值
print p1.mean()
          
            
2.0
          
            
#求標(biāo)準(zhǔn)差
print p1.std()
          
            
0.816496580928
          
            
#求和、求最大值、求最小值
print p1.sum()
print p1.max()
print p1.min()
          
            
6
3
1
          
            
#求最大值所在位置
print p1.argmax()
          
            
2
          

2、向量運(yùn)算

            
p1 = np.array([1, 2, 3])
p2 = np.array([2, 5, 7])
          
            
#向量相加,各個(gè)元素相加
print p1 + p2
          
            
[ 3 7 10]
          
            
#向量乘以1個(gè)常數(shù)
print p1 * 2
          
            
[2 4 6]
          
            
#向量相減
print p1 - p2
          
            
[-1 -3 -4]
          
            
#向量相乘,各個(gè)元素之間做運(yùn)算
print p1 * p2
          
            
[ 2 10 21]
          
            
#向量與一個(gè)常數(shù)比較
print p1 > 2
          
            
[False False True]
          

3、索引數(shù)組

首先,看下面一幅圖,理解下

python學(xué)習(xí)教程之Numpy和Pandas的使用_第1張圖片

然后,咱們用代碼實(shí)現(xiàn)看下

            
a = np.array([1, 2, 3, 4, 5])
print a
          
            
[1 2 3 4 5]
          
            
b = a > 2
print b
          
            
[False False True True True]
          
            
print a[b]
          
            
[3 4 5]
          

a[b]中,只會(huì)保留a中所對(duì)應(yīng)的b位置為T(mén)rue的元素

4、原地與非原地

咱們先來(lái)看一組運(yùn)算:

            
a = np.array([1, 2, 3, 4])
b = a
a += np.array([1, 1, 1, 1])
print b
          
            
[2 3 4 5]
          
            
a = np.array([1, 2, 3, 4])
b = a
a = a + np.array([1, 1, 1, 1])
print b
          
            
[1 2 3 4]
          

從上面結(jié)果可以看出來(lái),+=改變了原來(lái)數(shù)組,而+沒(méi)有。這是因?yàn)椋?

  • +=:它是原地計(jì)算,不會(huì)創(chuàng)建一個(gè)新的數(shù)組,在原始數(shù)組中更改元素
  • +:它是非原地計(jì)算,會(huì)創(chuàng)建一個(gè)新的數(shù)組,不會(huì)修改原始數(shù)組中的元素

5、Numpy中的切片與List的切片

            
l1 = [1, 2, 3, 5]
l2 = l1[0:2]
l2[0] = 5
print l2
print l1
          
            
[5, 2]
[1, 2, 3, 5]
          
            
p1 = np.array([1, 2, 3, 5])
p2 = p1[0:2]
p2[0] = 5
print p1
print p2
          
            
[5 2 3 5]
[5 2]
          

從上可知,List中改變切片中的元素,不會(huì)影響原來(lái)的數(shù)組;而Numpy改變切片中的元素,原來(lái)的數(shù)組也跟著變了。這是因?yàn)椋篘umpy的切片編程不會(huì)創(chuàng)建一個(gè)新數(shù)組出來(lái),當(dāng)修改對(duì)應(yīng)的切片也會(huì)更改原始的數(shù)組數(shù)據(jù)。這樣的機(jī)制,可以讓Numpy比原生數(shù)組操作更快,但編程時(shí)需要注意。

6、二維數(shù)組的操作

            
p1 = np.array([[1, 2, 3], [7, 8, 9], [2, 4, 5]])
#獲取其中一維數(shù)組
print p1[0]
          
            
[1 2 3]
          
            
#獲取其中一個(gè)元素,注意它可以是p1[0, 1],也可以p1[0][1]
print p1[0, 1]
print p1[0][1]
          
            
2
2
          
            
#求和是求所有元素的和
print p1.sum()
          
            
41
[10 14 17]
          

但,當(dāng)設(shè)置axis參數(shù)時(shí),當(dāng)設(shè)置為0時(shí),是計(jì)算每一列的結(jié)果,然后返回一個(gè)一維數(shù)組;若是設(shè)置為1時(shí),則是計(jì)算每一行的結(jié)果,然后返回一維數(shù)組。對(duì)于二維數(shù)組,Numpy中很多函數(shù)都可以設(shè)置axis參數(shù)。

            
#獲取每一列的結(jié)果
print p1.sum(axis=0)
          
            
[10 14 17]
          
            
#獲取每一行的結(jié)果
print p1.sum(axis=1)
          
            
[ 6 24 11]
          
            
#mean函數(shù)也可以設(shè)置axis
print p1.mean(axis=0)
          
            
[ 3.33333333 4.66666667 5.66666667]
          

Pandas使用

Pandas有兩種結(jié)構(gòu),分別是Series和DataFrame。其中Series擁有Numpy的所有功能,可以認(rèn)為是簡(jiǎn)單的一維數(shù)組;而DataFrame是將多個(gè)Series按列合并而成的二維數(shù)據(jù)結(jié)構(gòu),每一列單獨(dú)取出來(lái)是一個(gè)Series。

咱們主要梳理下Numpy沒(méi)有的功能:

1、簡(jiǎn)單基本使用

            
import pandas as pd
pd1 = pd.Series([1, 2, 3])
print pd1
          
            
0 1
1 2
2 3
dtype: int64
          
            
#也可以求和和標(biāo)準(zhǔn)偏差
print pd1.sum()
print pd1.std()
          
            
6
1.0
          

2、索引

(1)Series中的索引

            
p1 = pd.Series(
 [1, 2, 3],
 index = ['a', 'b', 'c']
)
print p1
          
            
a 1
b 2
c 3
dtype: int64
          
            
print p1['a']
          

(2)DataFrame數(shù)組

            
p1 = pd.DataFrame({
 'name': ['Jack', 'Lucy', 'Coke'],
 'age': [18, 19, 21]
})
print p1
          
            
 age name
0 18 Jack
1 19 Lucy
2 21 Coke
          
            
#獲取name一列
print p1['name']
          
            
0 Jack
1 Lucy
2 Coke
Name: name, dtype: object
          
            
#獲取姓名的第一個(gè)
print p1['name'][0]
          
            
Jack
          
            
#使用p1[0]不能獲取第一行,但是可以使用iloc
print p1.iloc[0]
          
            
age 18
name Jack
Name: 0, dtype: object
          

總結(jié):

  • 獲取一列使用p1[‘name']這種索引
  • 獲取一行使用p1.iloc[0]

3、apply使用

apply可以操作Pandas里面的元素,當(dāng)庫(kù)里面沒(méi)用對(duì)應(yīng)的方法時(shí),可以通過(guò)apply來(lái)進(jìn)行封裝

            
def func(value):
 return value * 3
pd1 = pd.Series([1, 2, 5])
          
            
print pd1.apply(func)
          
            
0  3
1  6
2 15
dtype: int64
          

同樣可以在DataFrame上使用:

            
pd2 = pd.DataFrame({
 'name': ['Jack', 'Lucy', 'Coke'],
 'age': [18, 19, 21]
})
print pd2.apply(func)
          
            
 age   name
0 54 JackJackJack
1 57 LucyLucyLucy
2 63 CokeCokeCoke
          

4、axis參數(shù)

Pandas設(shè)置axis時(shí),與Numpy有點(diǎn)區(qū)別:

  • 當(dāng)設(shè)置axis為'columns'時(shí),是計(jì)算每一行的值
  • 當(dāng)設(shè)置axis為'index'時(shí),是計(jì)算每一列的值
            
pd2 = pd.DataFrame({
 'weight': [120, 130, 150],
 'age': [18, 19, 21]
})
          
            
0 138
1 149
2 171
dtype: int64
          
            
#計(jì)算每一行的值
print pd2.sum(axis='columns')
          
            
0 138
1 149
2 171
dtype: int64
          
            
#計(jì)算每一列的值
print pd2.sum(axis='index')
          
            
age  58
weight 400
dtype: int64
          

5、分組

            
pd2 = pd.DataFrame({
 'name': ['Jack', 'Lucy', 'Coke', 'Pol', 'Tude'],
 'age': [18, 19, 21, 21, 19]
})
#以年齡分組
print pd2.groupby('age').groups
          
            
{18: Int64Index([0], dtype='int64'), 19: Int64Index([1, 4], dtype='int64'), 21: Int64Index([2, 3], dtype='int64')}
          

6、向量運(yùn)算

需要注意的是,索引數(shù)組相加時(shí),對(duì)應(yīng)的索引相加

            
pd1 = pd.Series(
 [1, 2, 3],
 index = ['a', 'b', 'c']
)
pd2 = pd.Series(
 [1, 2, 3],
 index = ['a', 'c', 'd']
)
          
            
print pd1 + pd2
          
            
a 2.0
b NaN
c 5.0
d NaN
dtype: float64
          

出現(xiàn)了NAN值,如果我們期望NAN不出現(xiàn),如何處理?使用add函數(shù),并設(shè)置fill_value參數(shù)

            
print pd1.add(pd2, fill_value=0)
          
            
a 2.0
b 2.0
c 5.0
d 3.0
dtype: float64
          

同樣,它可以應(yīng)用在Pandas的dataFrame中,只是需要注意列與行都要對(duì)應(yīng)起來(lái)。

總結(jié)

這一周學(xué)習(xí)了優(yōu)達(dá)學(xué)城上分析基礎(chǔ)的課程,使用的是Numpy與Pandas。對(duì)于Numpy,以前在Tensorflow中用過(guò),但是很不明白,這次學(xué)習(xí)之后,才知道那么簡(jiǎn)單,算是有一定的收獲。

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

參考

Pandas 使用指南(上) 基本數(shù)據(jù)結(jié)構(gòu)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 亚洲精品福利你懂 | 国产综合成色在线视频 | 日韩精品小视频 | 欧美成人免费看片一区 | 国产精品成人品 | 午夜久久久 | 青青青国产依人精品视频 | 国产 日韩 欧美 亚洲 | 国产萝控精品福利视频免费观看 | 国产亚洲欧美视频 | 亚洲国产第一区 | 亚洲精品国产网红在线 | 国产精品天天干 | 国产免费又色又爽又黄的网站 | 亚洲天堂免费在线 | 久草日韩| 夜夜未满 18勿进的爽影院 | 久久久久99 | 日本久久高清视频 | 色www精品视频在线观看 | 男人天堂99 | 色婷婷视频在线 | 欧美久久xxxxxx影院 | 欧美va在线观看 | 欧美伊人 | 色综合久久天天综合绕观看 | 中文字幕在线免费观看 | 日本综合欧美一区二区三区 | 国产精品久久人妻无码网站一区无 | 成人在线视频免费观看 | 99pao成人国产永久免费视频 | 国产免费午夜 | 国产高清在线视频 | 网站在线观看 | 99爱在线精品视频免费观看9 | 伊人色综合网 | 亚洲精品免费在线 | 三级高清 | 午夜久草| 91亚洲国产成人久久精品网站 | 手机成人免费视频 |