小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

pandas:把python變成小型數(shù)據(jù)庫,小型Excel等等,功能強(qiáng)大

 rcylbx 2018-12-19

pandas全稱及說明

沒找到pandas縮寫的定義,我自己猜了一個(gè),應(yīng)該八九不離十吧。Python ANalysis DAta tookitS. pandas是一個(gè)開源的遵循BSD license的庫,支持高性能,易用的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具。目前最新穩(wěn)定版本是v0.22.0(2017.12.29)

安裝方法

conda install pandas

或者pip install pandas

如果下載比較慢,可以考慮直接下載安裝文件pandas-0.22.0-cp27-cp27mu-manylinux1_x86_64.whl

然后安裝sudo pip install wheel 之后, sudo pip install pandas-0.22.0-cp27-cp27mu-manylinux1_x86_64.whl 即可安裝完成。下面開始pandas之旅。

數(shù)據(jù)結(jié)構(gòu)介紹

pandas中有兩類非常重要的數(shù)據(jù)結(jié)構(gòu),即序列series和數(shù)據(jù)框dataFrame。series類似于numpy中的一維數(shù)組,特別之處在于它可以通過索引標(biāo)簽的方式獲取數(shù)據(jù),還具有索引的自動(dòng)對齊功能;dataframe類似于numpy的二維數(shù)組,當(dāng)更加靈活。

首先把下列三個(gè)庫import進(jìn)去,如果出現(xiàn)問題,請根據(jù)提示安裝相應(yīng)模塊。例如python-tk等。

>>> import matplotlib.pyplot as plt

>>> import pandas as pd

>>> import numpy as np

先看series的創(chuàng)建和使用

>>> arr1=np.arange(10)

>>> arr1

array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> type(arr1)

<type 'numpy.ndarray'>

>>> s1=pd.Series(arr1) #通過傳入numpy的一維數(shù)組對象創(chuàng)建series

>>> s1 #series的索引自動(dòng)從0開始。

0 0

1 1

2 2

3 3

4 4

5 5

6 6

7 7

8 8

9 9

dtype: int64

>>> type(s1)

<class 'pandas.core.series.Series'>

另外還可以通過字典的方式創(chuàng)建series

>>> dic1={'a':10,'b':20,'c':40}

>>> dic1

{'a': 10, 'c': 40, 'b': 20}

>>> type(dic1)

<type 'dict'>

>>> s2=pd.Series(dic1)

>>> s2 #從這里看series與字典更接近,都有索引。

a 10

b 20

c 40

dtype: int64

我們來看一下series的索引具體是什么

>>> s1.index

RangeIndex(start=0, stop=10, step=1)

>>> s2.index

Index([u'a', u'b', u'c'], dtype='object')

有了索引就可以通過索引訪問數(shù)據(jù)了。

>>> s1[3]

3

>>> s2['b']

20

>>> s1[[1,3,5]]

1 1

3 3

5 5

dtype: int64

還有一種創(chuàng)建series的方法

>>> s5=pd.Series(np.array([10,15,20,30,55,80]),index=['a','b','c','d','e','f'])

>>> s5

a 10

b 15

c 20

d 30

e 55

f 80

dtype: int64

>>> s6=pd.Series(np.array([12,11,13,15,14,16]), index=['a','c','g','b','d','f'])

>>> s6

a 12

c 11

g 13

b 15

d 14

f 16

dtype: int64

此時(shí)s5和s6的索引不相同,把他們相加會(huì)出現(xiàn)什么情況呢?

>>> s5 s6 #結(jié)果就是索引值對應(yīng)的數(shù)據(jù)相加,找不到對應(yīng)的索引值的就返回NaN。

a 22.0

b 30.0

c 31.0

d 44.0

e NaN

f 96.0

g NaN

dtype: float64

series比較好理解,因?yàn)樗且痪S的。那么數(shù)據(jù)框呢?它有行索引和列索引。

>>> arr2=np.array(np.arange(12)).reshape(4,3)

>>> arr2

array([[ 0, 1, 2],

[ 3, 4, 5],

[ 6, 7, 8],

[ 9, 10, 11]])

>>> df2=pd.DataFrame(arr2)

>>> df2 #看df2的值時(shí),一定要注意,最上面一行時(shí)列索引,最左邊一列是行索引。

0 1 2

0 0 1 2

1 3 4 5

2 6 7 8

3 9 10 11

>>>

類似數(shù)據(jù)庫操作的功能

pd.io.parsers.read_csv可以直接從csv文件中讀出內(nèi)容并組成一個(gè)DataFrame對象。我們假設(shè)有一個(gè)student.csv文件。

  1. student = pd.io.parsers.read_csv('student.csv')

查詢數(shù)據(jù)的前5行或末尾5行

  1. student.head()

  2. student.tail()

查詢指定的行

  1. student.ix[[0,2,4,5,7]] #這里的ix索引標(biāo)簽函數(shù)必須是中括號(hào)[]

查詢指定的列

  1. student[['Name','Height','Weight']].head() #如果多個(gè)列的話,必須使用雙重中括號(hào)

也可以通過ix索引標(biāo)簽查詢指定的列

  1. student.ix[:,['Name','Height','Weight']].head()

查詢指定的行和列

  1. student.ix[[0,2,4,5,7],['Name','Height','Weight']].head()

以上是從行或列的角度查詢數(shù)據(jù)的子集,現(xiàn)在我們來看看如何通過布爾索引實(shí)現(xiàn)數(shù)據(jù)的子集查詢。

查詢所有女生的信息

  1. student[student['Sex']=='F']

查詢出所有12歲以上的女生信息

  1. student[(student['Sex']=='F') & (student['Age']>12)]

查詢出所有12歲以上的女生姓名、身高和體重

  1. student[(student['Sex']=='F') & (student['Age']>12)][['Name','Height','Weight']]

上面的查詢邏輯其實(shí)非常的簡單,需要注意的是,如果是多個(gè)條件的查詢,必須在&(且)或者|(或)的兩端條件用括號(hào)括起來。

大家體會(huì)一下,這些操作和數(shù)據(jù)庫的操作是不是很類似?

強(qiáng)大的統(tǒng)計(jì)功能

另外pandas還提供了許多統(tǒng)計(jì)函數(shù):

  1. d1.count() #非空元素計(jì)算

  2. d1.min() #最小值

  3. d1.max() #最大值

  4. d1.idxmin() #最小值的位置,類似于R中的which.min函數(shù)

  5. d1.idxmax() #最大值的位置,類似于R中的which.max函數(shù)

  6. d1.quantile(0.1) #10%分位數(shù)

  7. d1.sum() #求和

  8. d1.mean() #均值

  9. d1.median() #中位數(shù)

  10. d1.mode() #眾數(shù)

  11. d1.var() #方差

  12. d1.std() #標(biāo)準(zhǔn)差

  13. d1.mad() #平均絕對偏差

  14. d1.skew() #偏度

  15. d1.kurt() #峰度

  16. d1.describe() #一次性輸出多個(gè)描述性統(tǒng)計(jì)指標(biāo)

在Excel中有一個(gè)非常強(qiáng)大的功能就是數(shù)據(jù)透視表,通過托拉拽的方式可以迅速的查看數(shù)據(jù)的聚合情況,這里的聚合可以是計(jì)數(shù)、求和、均值、標(biāo)準(zhǔn)差等。

pandas為我們提供了非常強(qiáng)大的函數(shù)pivot_table(),該函數(shù)就是實(shí)現(xiàn)數(shù)據(jù)透視表功能的。

pandas可以靈活的解決很多工作中的數(shù)據(jù)處理、統(tǒng)計(jì)分析等任務(wù)。更詳細(xì)的介紹,請自行搜索pandas官方網(wǎng)站。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多