python pandas庫(kù)的安裝和創(chuàng)建
pandas
對(duì)于數(shù)據(jù)分析的人員來(lái)說(shuō)都是必須熟悉的第三方庫(kù),pandas
在科學(xué)計(jì)算上有很大的優(yōu)勢(shì),特別是對(duì)于數(shù)據(jù)分析人員來(lái)說(shuō),相當(dāng)?shù)闹匾?。python中有了Numpy
,但是Numpy
還是比較數(shù)學(xué)化,還需要有一種庫(kù)能夠更加具體的代表數(shù)據(jù)模型,我們都非常的清楚在數(shù)據(jù)處理中EXCEL
扮演著非常重要的作用,表格的模式是數(shù)據(jù)模型最好的一種展現(xiàn)形式。
pandas
是對(duì)表格數(shù)據(jù)模型在python上的模擬,它有簡(jiǎn)單的像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è)第三方庫(kù)Matplotlib
有很多的連接,Matplotlib
一個(gè)最經(jīng)常用到的是用來(lái)展示數(shù)據(jù)的,如果還對(duì)Matplotlib
不了解的話,后面的章節(jié)會(huì)進(jìn)行介紹,現(xiàn)在先拿過(guò)來(lái)直接用下,如果還沒(méi)有安裝的話,一樣的用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 來(lái)確定,在建立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ù)分析的過(guò)程中,很常見(jiàn)的一種情況是數(shù)據(jù)直接從excel
或者cvs
過(guò)來(lái),可以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
。
訪問(wèn)DataFrame
可以跟二位數(shù)組一樣的訪問(wèn)方式:
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)行切片出來(lái),認(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ù),接下來(lái)會(huì)有更多的介紹。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python網(wǎng)絡(luò)爬蟲(chóng)采集聯(lián)想詞示例
這篇文章主要介紹了python網(wǎng)絡(luò)爬蟲(chóng)采集聯(lián)想詞示例,需要的朋友可以參考下2014-02-02Python使用StringIO和BytesIO讀寫內(nèi)存數(shù)據(jù)
這篇文章介紹了Python使用StringIO和BytesIO讀寫內(nèi)存數(shù)據(jù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05利用Python批量導(dǎo)出mysql數(shù)據(jù)庫(kù)表結(jié)構(gòu)的操作實(shí)例
這篇文章主要給大家介紹了關(guān)于利用Python批量導(dǎo)出mysql數(shù)據(jù)庫(kù)表結(jié)構(gòu)的相關(guān)資料,需要的朋友可以參考下2022-08-08Python基于httpx模塊實(shí)現(xiàn)發(fā)送請(qǐng)求
這篇文章主要介紹了Python基于httpx模塊實(shí)現(xiàn)發(fā)送請(qǐng)求,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07使用Python完成SAP客戶端的打開(kāi)和系統(tǒng)登陸功能
這篇文章主要介紹了使用Python完成SAP客戶端的打開(kāi)和系統(tǒng)登陸,涉及到SAP的打開(kāi)和登錄過(guò)程,本文重點(diǎn)介紹如何通過(guò)Python完成SAP應(yīng)用程序的打開(kāi)并進(jìn)入特定的”用戶指定系統(tǒng)“,需要的朋友可以參考下2022-05-05Python異常捕獲以及簡(jiǎn)單錯(cuò)誤日志生成方式
這篇文章主要介紹了Python異常捕獲以及簡(jiǎn)單錯(cuò)誤日志生成方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09python3.6+django2.0+mysql搭建網(wǎng)站過(guò)程詳解
這篇文章主要介紹了python3.6+django2.0+mysql搭建網(wǎng)站過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07