python pandas庫的安裝和創(chuàng)建
pandas 對(duì)于數(shù)據(jù)分析的人員來說都是必須熟悉的第三方庫,pandas 在科學(xué)計(jì)算上有很大的優(yōu)勢(shì),特別是對(duì)于數(shù)據(jù)分析人員來說,相當(dāng)?shù)闹匾?。python中有了Numpy ,但是Numpy 還是比較數(shù)學(xué)化,還需要有一種庫能夠更加具體的代表數(shù)據(jù)模型,我們都非常的清楚在數(shù)據(jù)處理中EXCEL 扮演著非常重要的作用,表格的模式是數(shù)據(jù)模型最好的一種展現(xiàn)形式。
pandas 是對(duì)表格數(shù)據(jù)模型在python上的模擬,它有簡單的像SQL 對(duì)數(shù)據(jù)的處理,能夠方便的在python上實(shí)現(xiàn)。
pandas 的安裝
pandas 在python上的安裝同樣的使用pip進(jìn)行:
pip install pandas
pandas 創(chuàng)建對(duì)象
pandas 有兩種數(shù)據(jù)結(jié)構(gòu):Series 和 DataFrame 。
Series
Series 像python中的數(shù)據(jù)list 一樣,每個(gè)數(shù)據(jù)都有自己的索引。從list創(chuàng)建 Series。
>>> import pandas as pd >>> s1 = pd.Series([100,23,'bugingcode']) >>> s1 0 100 1 23 2 bugingcode dtype: object >>>
在Series 中添加相應(yīng)的索引:
>>> import numpy as np >>> ts = pd.Series(np.random.randn(365), index=np.arange(1,366)) >>> ts
在index中設(shè)置索引值是一個(gè)從1到366的值。
Series 的數(shù)據(jù)結(jié)構(gòu)最像的是python中的字典,從字典中創(chuàng)建Series:
sd = {'xiaoming':14,'tom':15,'john':13}
s4 = pd.Series(sd)
這時(shí)候可以看到Series 已經(jīng)是自帶索引index。
pandas 本身跟 python的另外一個(gè)第三方庫Matplotlib 有很多的連接,Matplotlib 一個(gè)最經(jīng)常用到的是用來展示數(shù)據(jù)的,如果還對(duì)Matplotlib 不了解的話,后面的章節(jié)會(huì)進(jìn)行介紹,現(xiàn)在先拿過來直接用下,如果還沒有安裝的話,一樣的用pip命令安裝 pip install Matplotlib , 展示如下數(shù)據(jù):
import pandas as pd import numpy as np import matplotlib.pyplot as plt ts = pd.Series(np.random.randn(365), index=np.arange(1,366)) ts.plot() plt.show()

一個(gè)不規(guī)則的圖形,在數(shù)據(jù)分析中,時(shí)間是一個(gè)重要的特性,因?yàn)楹芏鄶?shù)據(jù)都是跟時(shí)間是有關(guān)系的,銷售額跟時(shí)間有關(guān)系,天氣跟時(shí)間有關(guān)系。。。,在pandas 中也提供了關(guān)于時(shí)間的一些函數(shù),使用date_range 生成一系列時(shí)間。
>>> pd.date_range('01/01/2017',periods=365)
DatetimeIndex(['2017-01-01', '2017-01-02', '2017-01-03', '2017-01-04',
'2017-01-05', '2017-01-06', '2017-01-07', '2017-01-08',
'2017-01-09', '2017-01-10',
...
'2017-12-22', '2017-12-23', '2017-12-24', '2017-12-25',
'2017-12-26', '2017-12-27', '2017-12-28', '2017-12-29',
'2017-12-30', '2017-12-31'],
dtype='datetime64[ns]', length=365, freq='D')
>>>
之前我們的圖形不規(guī)則,有一個(gè)原因是數(shù)據(jù)不是連續(xù)的,使用cumsum讓數(shù)據(jù)連續(xù):
如下:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
ts = pd.Series(np.random.randn(365), index=pd.date_range('01/01/2017',periods=365))
ts = ts.cumsum()
ts.plot()
plt.show()

DataFrame
DataFrame 相當(dāng)于Series 一維的一個(gè)擴(kuò)展,是一種二維的數(shù)據(jù)模型,相當(dāng)于EXcel表格中的數(shù)據(jù),有橫豎兩種坐標(biāo),橫軸很Series 一樣使用index,豎軸用columns 來確定,在建立DataFrame 對(duì)象的時(shí)候,需要確定三個(gè)元素:數(shù)據(jù),橫軸,豎軸。
df = pd.DataFrame(np.random.randn(8,6), index=pd.date_range('01/01/2018',periods=8),columns=list('ABCDEF'))
print df
數(shù)據(jù)如下:
A B C D E F
2018-01-01 0.712636 0.546680 -0.847866 -0.629005 2.152686 0.563907
2018-01-02 -1.292799 1.122098 0.743293 0.656412 0.989738 2.468200
2018-01-03 1.762894 0.783614 -0.301468 0.289608 -0.780844 0.873074
2018-01-04 -0.818066 1.629542 -0.595451 0.910141 0.160980 0.306660
2018-01-05 2.008658 0.456592 -0.839597 1.615013 0.718422 -0.564584
2018-01-06 0.480893 0.724015 -1.076434 -0.253731 0.337147 -0.028212
2018-01-07 -0.672501 0.739550 -1.316094 1.118234 -1.456680 -0.601890
2018-01-08 -1.028436 -1.036542 -0.459044 1.321962 -0.198338 -1.034822
在數(shù)據(jù)分析的過程中,很常見的一種情況是數(shù)據(jù)直接從excel 或者cvs 過來,可以excel中讀取數(shù)據(jù)到DataFrame ,數(shù)據(jù)在 DataFrame 中進(jìn)行處理:
df = pd.read_excel('data.xlsx',sheet_name= 'Sheet1')
print df
同樣的有保存數(shù)據(jù)到excel 中 to_excel。
處理cvs數(shù)據(jù)的函數(shù)是:read_cvs 和 to_cvs ,處理HDF5的函數(shù)為 read_hdf 和 to_hdf 。
訪問DataFrame 可以跟二位數(shù)組一樣的訪問方式:
print df['A']
帶出橫軸標(biāo)簽:
2018-01-01 0.712636 2018-01-02 -1.292799 2018-01-03 1.762894 2018-01-04 -0.818066 2018-01-05 2.008658 2018-01-06 0.480893 2018-01-07 -0.672501 2018-01-08 -1.028436
同樣的可以指定某一個(gè)元素:
print df['A']['2018-01-01']
對(duì)數(shù)組進(jìn)行切片出來,認(rèn)清橫軸和縱軸:
>>> import pandas as pd
>>> df = pd.read_excel('data.xlsx',sheet_name= 'Sheet1')
>>> df[:][0:3]
A B C D E F
2018-01-01 0.712636 0.546680 -0.847866 -0.629005 2.152686 0.563907
2018-01-02 -1.292799 1.122098 0.743293 0.656412 0.989738 2.468200
2018-01-03 1.762894 0.783614 -0.301468 0.289608 -0.780844 0.873074
>>>
DataFrame 涉及的較多的函數(shù),接下來會(huì)有更多的介紹。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解python中的defaultdict?默認(rèn)值
這篇文章主要介紹了defaultdict?默認(rèn)值,defaultdict是python內(nèi)建dict類的一個(gè)字類,功能與dict相同,但它帶有一個(gè)默認(rèn)的值,若key值不存在時(shí)返回一個(gè)默認(rèn)的值,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
PyQt5入門之基于QListWidget版本實(shí)現(xiàn)圖片縮略圖列表功能
這篇文章主要介紹了PyQt5入門之基于QListWidget版本實(shí)現(xiàn)圖片縮略圖列表功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
python實(shí)現(xiàn)動(dòng)態(tài)數(shù)組的示例代碼
這篇文章主要介紹了python實(shí)現(xiàn)動(dòng)態(tài)數(shù)組的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
在python中使用pymysql往mysql數(shù)據(jù)庫中插入(insert)數(shù)據(jù)實(shí)例
今天小編就為大家分享一篇在python中使用pymysql往mysql數(shù)據(jù)庫中插入(insert)數(shù)據(jù)實(shí)例。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03
詳解Python中命令行參數(shù)argparse的常用命令
這篇文章主要為大家詳細(xì)介紹了Python中命令行參數(shù)argparse的一些常用命令,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以了解一下2023-01-01
Python中static相關(guān)知識(shí)小結(jié)
static用法:是一個(gè)修飾符,用于修飾成員(成員變量,成員函數(shù)).當(dāng)成員被靜態(tài)修飾后,就多了一個(gè)調(diào)用方式,除了可以被對(duì)象調(diào)用外,還可以直接被類名調(diào)用,格式——類名.靜態(tài)成員。2018-01-01
使用Python裝飾器在Django框架下去除冗余代碼的教程
這篇文章主要介紹了使用Python裝飾器在Django框架下去除冗余代碼的教程,主要是處理JSON代碼的一些冗余,需要的朋友可以參考下2015-04-04
pandas中字典和dataFrame的相互轉(zhuǎn)換
有時(shí)候需要把dic轉(zhuǎn)換為DataFrame格式,便于查看和存儲(chǔ),下面這篇文章主要給大家介紹了關(guān)于pandas中字典和dataFrame相互轉(zhuǎn)換的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09

