標籤:

Python數據分析模塊 | pandas做數據分析(一):基本數據對象

pandas有兩個最主要的數據結構,分別是Series和DataFrame,所以一開始的任務就是好好熟悉一下這兩個數據結構。

1、Series

官方文檔: pandas.Series (pandas.pydata.org/panda

Series是類似於一維數組的對象,由一組數據(各種numpy的數據類型)以及一組與之相關的標籤組成。首先看一下怎麼構造出Series來。

class pandas.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)

參數:

data : 類array的,字典,或者是標量

index : 索引列表,和data的長度一樣

dtype : numpy.dtype,沒有的話,會根據data內容自動推斷

copy : boolean,默認是False

常用屬性

接下來給出屬性,常用的屬性經常用到的不多,其他的屬性可以查上面給出的文檔。

屬性:

dtype 數據元素的類型.

empty 是否為空.

index 索引對象

ix A primarily label-location based indexer, with integer position fallback.

loc Purely label-location based indexer for selection by label.

name

nbytes return the number of bytes in the underlying data

ndim 返回數據部分的維度大小

shape 返回一個元組,表示數據的形狀

size 返回元素的數量。

strides return the strides of the underlying data

values 返回Series對象中的值部分,ndarray類型

這裡直接給出例子來創建Series。有很多中創建方式,很繁雜,所以就把例子放在一起,就一目了然了。

# -*- coding: utf-8 -*-nfrom __future__ import print_function,divisionn#from pandas import Series,DataFramenimport pandas as pdn#傳入data卻不傳入索引列表,那麼自動創建0~N-1的索引nS=pd.Series(data=[1,2,3,4])nprint ("S:n",S) n#傳入了data和索引列表nprint ()nS2=pd.Series(data=[4,3,2,1],index=["a","b","c","d"])nprint ("S2:n",S2)nprint (S2.index)n#通過索引的方式來訪問一個或者一列值(很像字典的訪問)nprint (S2[c])nprint (S2[[a,b,c]])#通過字典創建(上面還說了很像一個字典)nprint () dict={"leo":24,"kate":23,"mat":11}nS3=pd.Series(data=dict)nprint ("S3:n",S3)n#即使是傳入一個字典,還是可以傳入一個索引的,n# 要是索引和字典中的相同,那麼就會並進去n# 要是不相同,那麼找不到值,相應的value就會被設為NaNnprint () idx=["leo","kate","pig","cat"]nS4=pd.Series(data=dict,index=idx)nprint ("S4:n",S4)n

結果:詳解看注釋

2、Data Frame

官方文檔:DataFrame

很自然的,首先依舊是要看一下怎麼創建DataFrame對象.下面是構造函數.

class pandas.DataFrame(data=None,index=None,columns=None, dtype=None, copy=False)

參數:

data : 傳入的數據,可以是二維的ndarray,字典,或者一個DataFrame對象.還可以傳入各種類型組合的數據,這裡不細講了,在實際中遇到再講

index : Index對象或者array-like型,可以簡單的理解為」行」索引.

columns :Index對象或者array-like型,可以簡單的理解為列索引.

dtype : 元素的類型.

copy : 布爾值,表示是否顯式複製.默認為False.

這裡直接通過例子來說明DataFrame的創建.

創建DataFrame對象最常用的就是傳入等長列表組成的字典啦:

import numpy as npnimport pandas as pdn#等長列表組成的字典ndata={ n"name":["leo","tom","kate","pig"], n"age":[10,20,30,40], n"weight":[50,50,40,200]n}nframe=pd.DataFrame(data=data)nprint("frame:")nprint(frame)n#指定列順序columnsnframe2=pd.DataFrame(data=data,columns=["name","weight","age"])nprint("frame2:")nprint(frame2)n#指定index,其中columns參數裡面沒有的,會被設置為NaNnframe3=pd.DataFrame(data=data,columns=["name","weight","age","height"],index=["one","two","three","four"])nprint("frame3:")nprint(frame3)n#索引一列nprint("name:n",frame3["name"])nprint("weight:n",frame3.weight)n#改變一列的值nframe3["height"]=100nprint("frame3")nprint(frame3)n

結果:

常用屬性

T:轉秩 at 基於索引的快速標量訪問器,比如使用的時候xxx.at[index,colume] iat 整形索引快速訪問標量,使用方式例如obj.iat[1,2],相當於依靠位置訪問某個元素 dtypes 返回各個列的元素類型. empty 判斷是否是空 loc 通過index來選擇,可以得到標量,也可以得到一個Series對象.使用方式可以參照at屬性. iloc 整形索引,作用和loc一模一樣,只是這個是通過整形來索引.這些都只能夠得到單個的行或者列. ix 可以根據標籤選擇單個或者一組行,單個列或者一組列,是非常靈活的屬性. ndim 維度數目Number of axes / array dimensions shape 形狀 size 所有元素數量 values 返回表示值的ndarray

這裡是第一部分的一些示例代碼:XierHacker/LearnPandas

推薦閱讀:

使用Python進行語音識別---將音頻轉為文字
Python-Excel 模塊哪家強?
從零開始掌握Python機器學習:十四步教程

TAG:Python |