如果你想獲取 'A' 列的第 0 和第 2 個元素,你可以這樣做:
創(chuàng)新互聯(lián)是一家專業(yè)提供龍華企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、H5開發(fā)、小程序制作等業(yè)務(wù)。10年已為龍華眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
這也可以用 .iloc 獲取,通過使用位置索引來選擇內(nèi)容
可以使用 .get_indexer 獲取多個索引:
警告 :
對于包含一個或多個缺失標(biāo)簽的列表,使用 .loc 或 [] 將不再重新索引,而是使用 .reindex
在以前的版本中,只要索引列表中存在至少一個有效標(biāo)簽,就可以使用 .loc[list-of-labels]
但是現(xiàn)在,只要索引列表中存在缺失的標(biāo)簽將引發(fā) KeyError 。推薦的替代方法是使用 .reindex() 。
例如
索引列表的標(biāo)簽都存在
先前的版本
但是,現(xiàn)在
索引標(biāo)簽列表中包含不存在的標(biāo)簽,使用 reindex
另外,如果你只想選擇有效的鍵,可以使用下面的方法,同時保留了數(shù)據(jù)的 dtype
對于 .reindex() ,如果有重復(fù)的索引將會引發(fā)異常
通常,您可以將所需的標(biāo)簽與當(dāng)前軸做交集,然后重新索引
但是,如果你的索引結(jié)果包含重復(fù)標(biāo)簽,還是會引發(fā)異常
使用 sample() 方法可以從 Series 或 DataFrame 中隨機(jī)選擇行或列。
該方法默認(rèn)會對行進(jìn)行采樣,并接受一個特定的行數(shù)、列數(shù),或數(shù)據(jù)子集。
默認(rèn)情況下, sample 每行最多返回一次,但也可以使用 replace 參數(shù)進(jìn)行替換采樣
默認(rèn)情況下,每一行被選中的概率相等,但是如果你想讓每一行有不同的概率,你可以為 sample 函數(shù)的 weights 參數(shù)設(shè)置抽樣權(quán)值
這些權(quán)重可以是一個列表、一個 NumPy 數(shù)組或一個 Series ,但它們的長度必須與你要抽樣的對象相同。
缺失的值將被視為權(quán)重為零,并且不允許使用 inf 值。如果權(quán)重之和不等于 1 ,則將所有權(quán)重除以權(quán)重之和,將其重新歸一化。例如
當(dāng)應(yīng)用于 DataFrame 時,您可以通過簡單地將列名作為字符串傳遞給 weights 作為采樣權(quán)重(前提是您要采樣的是行而不是列)。
sample 還允許用戶使用 axis 參數(shù)對列進(jìn)行抽樣。
最后,我們還可以使用 random_state 參數(shù)為 sample 的隨機(jī)數(shù)生成器設(shè)置一個種子,它將接受一個整數(shù)(作為種子)或一個 NumPy RandomState 對象
當(dāng)為該軸設(shè)置一個不存在的鍵時, .loc/[] 操作可以執(zhí)行放大
在 Series 的情況下,這實(shí)際上是一個追加操作
可以通過 .loc 在任一軸上放大 DataFrame
這就像 DataFrame 的 append 操作
由于用 [] 做索引必須處理很多情況(單標(biāo)簽訪問、分片、布爾索引等),所以需要一些開銷來搞清楚你的意圖
如果你只想訪問一個標(biāo)量值,最快的方法是使用 at 和 iat 方法,這兩個方法在所有的數(shù)據(jù)結(jié)構(gòu)上都實(shí)現(xiàn)了
與 loc 類似, at 提供了基于標(biāo)簽的標(biāo)量查找,而 iat 提供了基于整數(shù)的查找,與 iloc 類似
同時,你也可以根據(jù)這些索引進(jìn)行設(shè)置值
如果索引標(biāo)簽不存在,會放大數(shù)據(jù)
另一種常見的操作是使用布爾向量來過濾數(shù)據(jù)。運(yùn)算符包括:
|(or) 、 (and) 、 ~ (not)
這些必須用括號來分組,因?yàn)槟J(rèn)情況下, Python 會將 df['A'] 2 df['B'] 3 這樣的表達(dá)式評估為 df['A'] (2 df['B']) 3 ,而理想的執(zhí)行順序是 (df['A'] 2) (df['B'] 3)
使用一個布爾向量來索引一個 Series ,其工作原理和 NumPy ndarray 一樣。
您可以使用一個與 DataFrame 的索引長度相同的布爾向量從 DataFrame 中選擇行
列表推導(dǎo)式和 Series 的 map 函數(shù)可用于產(chǎn)生更復(fù)雜的標(biāo)準(zhǔn)
我們可以使用布爾向量結(jié)合其他索引表達(dá)式,在多個軸上索引
iloc 支持兩種布爾索引。如果索引器是一個布爾值 Series ,就會引發(fā)異常。
例如,在下面的例子中, df.iloc[s.values, 1] 是正確的。但是 df.iloc[s,1] 會引發(fā) ValueError 。
#python中的pandas庫主要有DataFrame和Series類(面向?qū)ο蟮牡恼Z言更愿意叫類) DataFrame也就是
#數(shù)據(jù)框(主要是借鑒R里面的data.frame),Series也就是序列 ,pandas底層是c寫的 性能很棒,有大神
#做過測試 處理億級別的數(shù)據(jù)沒問題,起性能可以跟同等配置的sas媲美
#DataFrame索引 df.loc是標(biāo)簽選取操作,df.iloc是位置切片操作
print(df[['row_names','Rape']])
df['行標(biāo)簽']
df.loc[行標(biāo)簽,列標(biāo)簽]
print(df.loc[0:2,['Rape','Murder']])
df.iloc[行位置,列位置]
df.iloc[1,1]#選取第二行,第二列的值,返回的為單個值
df.iloc[0,2],:]#選取第一行及第三行的數(shù)據(jù)
df.iloc[0:2,:]#選取第一行到第三行(不包含)的數(shù)據(jù)
df.iloc[:,1]#選取所有記錄的第一列的值,返回的為一個Series
df.iloc[1,:]#選取第一行數(shù)據(jù),返回的為一個Series
print(df.ix[1,1]) # 更廣義的切片方式是使用.ix,它自動根據(jù)你給到的索引類型判斷是使用位置還是標(biāo)簽進(jìn)行切片
print(df.ix[0:2])
#DataFrame根據(jù)條件選取子集 類似于sas里面if、where ,R里面的subset之類的函數(shù)
df[df.Murder13]
df[(df.Murder10)(df.Rape30)]
df[df.sex==u'男']
#重命名 相當(dāng)于sas里面的rename R軟件中reshape包的中的rename
df.rename(columns={'A':'A_rename'})
df.rename(index={1:'other'})
#刪除列 相當(dāng)于sas中的drop R軟件中的test['col']-null
df.drop(['a','b'],axis=1) or del df[['a','b']]
#排序 相當(dāng)于sas里面的sort R軟件里面的df[order(x),]
df.sort(columns='C') #行排序 y軸上
df.sort(axis=1) #各個列之間位置排序 x軸上
#數(shù)據(jù)描述 相當(dāng)于sas中proc menas R軟件里面的summary
df.describe()
#生成新的一列 跟R里面有點(diǎn)類似
df['new_columns']=df['columns']
df.insert(1,'new_columns',df['B']) #效率最高
df.join(Series(df['columns'],name='new_columns'))
#列上面的追加 相當(dāng)于sas中的append R里面cbind()
df.append(df1,ignore_index=True)
pd.concat([df,df1],ignore_index=True)
#最經(jīng)典的join 跟sas和R里面的merge類似 跟sql里面的各種join對照
merge()
#刪除重行 跟sas里面nodukey R里面的which(!duplicated(df[])類似
df.drop_duplicated()
#獲取最大值 最小值的位置 有點(diǎn)類似矩陣?yán)锩娴姆椒?/p>
df.idxmin(axis=0 ) df.idxmax(axis=1) 0和1有什么不同 自己摸索去
#讀取外部數(shù)據(jù)跟sas的proc import R里面的read.csv等類似
read_excel() read_csv() read_hdf5() 等
與之相反的是df.to_excel() df.to_ecv()
#缺失值處理 個人覺得pandas中缺失值處理比sas和R方便多了
df.fillna(9999) #用9999填充
#鏈接數(shù)據(jù)庫 不多說 pandas里面主要用 MySQLdb
import MySQLdb
conn=MySQLdb.connect(host="localhost",user="root",passwd="",db="mysql",use_unicode=True,charset="utf8")
read_sql() #很經(jīng)典
#寫數(shù)據(jù)進(jìn)數(shù)據(jù)庫
df.to_sql('hbase_visit',con, flavor="mysql", if_exists='replace', index=False)
#groupby 跟sas里面的中的by R軟件中dplyr包中的group_by sql里面的group by功能是一樣的 這里不多說
#求啞變量
dumiper=pd.get_dummies(df['key'])
df['key'].join(dumpier)
#透視表 和交叉表 跟sas里面的proc freq步類似 R里面的aggrate和cast函數(shù)類似
pd.pivot_table()
pd.crosstab()
#聚合函數(shù)經(jīng)常跟group by一起組合用
df.groupby('sex').agg({'height':['mean','sum'],'weight':['count','min']})
#數(shù)據(jù)查詢過濾
test.query("0.2
將STK_ID中的值過濾出來
stk_list = ['600809','600141','600329']中的全部記錄過濾出來,命令是:rpt[rpt['STK_ID'].isin(stk_list)].
將dataframe中,某列進(jìn)行清洗的命令
刪除換行符:misc['product_desc'] = misc['product_desc'].str.replace('\n', '')
刪除字符串前后空格:df["Make"] = df["Make"].map(str.strip)
如果用模糊匹配的話,命令是:
rpt[rpt['STK_ID'].str.contains(r'^600[0-9]{3}$')]
對dataframe中元素,進(jìn)行類型轉(zhuǎn)換
df['2nd'] = df['2nd'].str.replace(',','').astype(int) df['CTR'] = df['CTR'].str.replace('%','').astype(np.float64)
#時間變換 主要依賴于datemie 和time兩個包
#其他的一些技巧
df2[df2['A'].map(lambda x:x.startswith('61'))] #篩選出以61開頭的數(shù)據(jù)
df2["Author"].str.replace(".+", "").head() #replace(".+", "")表示將字符串中以””開頭;以””結(jié)束的任意子串替換為空字符串
commits = df2["Name"].head(15)
print commits.unique(), len(commits.unique()) #獲的NAME的不同個數(shù),類似于sql里面count(distinct name)
#pandas中最核心 最經(jīng)典的函數(shù)apply map applymap
PIL有如下幾個模塊:Image模塊、ImageChops模塊、ImageCrackCode模塊、ImageDraw模塊、ImageEnhance模塊、ImageFile模塊、ImageFileIO模塊、ImageFilter模塊、ImageFont模塊、ImageGrab模塊、ImageOps模塊、ImagePath模塊、ImageSequence模塊、ImageStat模塊、ImageTk模塊、ImageWin模塊、PSDraw模塊
啊啊啊啊怎么這么多模塊啊~~~!!!!
別擔(dān)心我為你一一講解
Image模塊提供了一個相同名稱的類,即image類,用于表示PIL圖像。
Image模塊是PIL中最重要的模塊 ,比如創(chuàng)建、打開、顯示、保存圖像等功能,合成、裁剪、濾波等功能,獲取圖像屬性功能,如圖像直方圖、通道數(shù)等。
Image模塊的使用如下:
ImageChops模塊包含一些算術(shù)圖形操作,這些操作可用于諸多目的,比如圖像特效,圖像組合,算法繪圖等等,通道操作只用于8位圖像。
ImageChops模塊的使用如下:
由于圖像im_dup是im的復(fù)制過來的,所以它們的差為0,圖像im_diff顯示時為黑圖。
ImageCrackCode模塊允許用戶檢測和測量圖像的各種特性。 這個模塊只存在于PIL Plus包中。
因?yàn)槲夷壳鞍惭b的PIL中沒有包含這個模塊。所以就不詳細(xì)介紹了
ImageDraw模塊為image對象提供了基本的圖形處理功能。 例如,它可以創(chuàng)建新圖像,注釋或潤飾已存在圖像,為web應(yīng)用實(shí)時產(chǎn)生各種圖形。
ImageDraw模塊的使用如下:
在del draw前后顯示出來的圖像im是完全一樣的,都是在原有圖像上畫了兩條對角線。
原諒我的報錯
ImageEnhance模塊包括一些用于圖像增強(qiáng)的類。它們分別為 Color類、Brightness類、Contrast類和Sharpness類。
ImageEnhance模塊的使用如下:
圖像im0的亮度為圖像im的一半。
ImageFile模塊為圖像打開和保存功能提供了相關(guān)支持功能。另外,它提供了一個Parser類,這個類可以一塊一塊地對一張圖像進(jìn)行解碼(例如,網(wǎng)絡(luò)聯(lián)接中接收一張圖像)。這個類的接口與標(biāo)準(zhǔn)的sgmllib和xmllib模塊的接口一樣。
ImageFile模塊的使用如下:
因?yàn)樗蜷_圖像大小大于1024個byte,所以報錯:圖像不完整。
所以大家想看的可以自行去找一個小一點(diǎn)的圖看一下
ImageFileIO模塊用于從一個socket或者其他流設(shè)備中讀取一張圖像。 不贊成使用這個模塊。 在新的code中將使用ImageFile模塊的Parser類來代替它。
ImageFilter模塊包括各種濾波器的預(yù)定義集合,與Image類的filter方法一起使用。該模塊包含這些圖像增強(qiáng)的濾器:BLUR,CONTOUR,DETAIL,EDGE_ENHANCE,EDGE_ENHANCE_MORE,EMBOSS,F(xiàn)IND_EDGES,SMOOTH,SMOOTH_MORE和SHARPEN。
ImageFilter模塊的使用如下:
ImageFont模塊定義了一個同名的類,即ImageFont類。這個類的實(shí)例中存儲著bitmap字體,需要與ImageDraw類的text方法一起使用。
PIL使用自己的字體文件格式存儲bitmap字體。用戶可以使用pilfont工具包將BDF和PCF字體描述器(Xwindow字體格式)轉(zhuǎn)換為這種格式。
PIL Plus包中才會支持矢量字體。
ImageGrab模塊用于將屏幕上的內(nèi)容拷貝到一個PIL圖像內(nèi)存中。 當(dāng)前的版本只在windows操作系統(tǒng)上可以工作。
ImageGrab模塊的使用如下:
圖像im顯示出筆記本當(dāng)前的窗口內(nèi)容,就是類似于截圖的工具
ImageOps模塊包括一些“ready-made”圖像處理操作。 它可以完成直方圖均衡、裁剪、量化、鏡像等操作 。大多數(shù)操作只工作在L和RGB圖像上。
ImageOps模塊的使用如下:
圖像im_flip為圖像im垂直方向的鏡像。
ImagePath模塊用于存儲和操作二維向量數(shù)據(jù)。Path對象將被傳遞到ImageDraw模塊的方法中。
ImagePath模塊的使用如下:
ImageSequence模塊包括一個wrapper類,它為圖像序列中每一幀提供了迭代器。
ImageSequence模塊的使用如下:
后面兩次show()函數(shù)調(diào)用,分別顯示第1張和第11張圖像。
ImageStat模塊計算一張圖像或者一張圖像的一個區(qū)域的全局統(tǒng)計值。
ImageStat模塊的使用如下:
ImageTk模塊用于創(chuàng)建和修改BitmapImage和PhotoImage對象中的Tkinter。
ImageTk模塊的使用如下:
這個是我一直不太懂的有沒有大佬能幫我解決一下在線等~急!
PSDraw模塊為Postscript打印機(jī)提供基本的打印支持。用戶可以通過這個模塊打印字體,圖形和圖像。
PIL中所涉及的基本概念有如下幾個: 通道(bands)、模式(mode)、尺寸(size)、坐標(biāo)系統(tǒng)(coordinate system)、調(diào)色板(palette)、信息(info)和濾波器(filters)。
每張圖片都是由一個或者多個數(shù)據(jù)通道構(gòu)成。PIL允許在單張圖片中合成相同維數(shù)和深度的多個通道。
以RGB圖像為例,每張圖片都是由三個數(shù)據(jù)通道構(gòu)成,分別為R、G和B通道。而對于灰度圖像,則只有一個通道。
對于一張圖片的通道數(shù)量和名稱,可以通過getbands()方法來獲取。getbands()方法是Image模塊的方法,它會返回一個字符串元組(tuple)。該元組將包括每一個通道的名稱。
Python的元組與列表類似,不同之處在于元組的元素不能修改,元組使用小括號,列表使用方括號,元組創(chuàng)建很簡單,只需要在括號中添加元素,并使用逗號隔開即可。
getbands()方法的使用如下:
圖像的模式定義了圖像的類型和像素的位寬。當(dāng)前支持如下模式:
1:1位像素,表示黑和白,但是存儲的時候每個像素存儲為8bit。
L:8位像素,表示黑和白。
P:8位像素,使用調(diào)色板映射到其他模式。
I:32位整型像素。
F:32位浮點(diǎn)型像素。
RGB:3x8位像素,為真彩色。
RGBA:4x8位像素,有透明通道的真彩色。
CMYK:4x8位像素,顏色分離。
YCbCr:3x8位像素,彩色視頻格式。
PIL也支持一些特殊的模式,包括RGBX(有padding的真彩色)和RGBa(有自左乘alpha的真彩色)。
可以通過mode屬性讀取圖像的模式。其返回值是包括上述模式的字符串。
mode 屬性 的使用如下:
通過size屬性可以獲取圖片的尺寸。這是一個二元組,包含水平和垂直方向上的像素數(shù)。
mode屬性的使用如下:
PIL使用笛卡爾像素坐標(biāo)系統(tǒng),坐標(biāo)(0,0)位于左上角。注意:坐標(biāo)值表示像素的角;位于坐標(biāo)(0,0)處的像素的中心實(shí)際上位于(0.5,0.5)。
坐標(biāo)經(jīng)常用于二元組(x,y)。長方形則表示為四元組,前面是左上角坐標(biāo)。例如:一個覆蓋800x600的像素圖像的長方形表示為(0,0,800,600)。
調(diào)色板模式 ("P")使用一個顏色調(diào)色板為每個像素定義具體的顏色值
使用info屬性可以為一張圖片添加一些輔助信息。這個是字典對象。加載和保存圖像文件時,多少信息需要處理取決于文件格式。
info屬性的使用如下:
對于將多個輸入像素映射為一個輸出像素的幾何操作,PIL提供了4個不同的采樣濾波器:
NEAREST:最近濾波。 從輸入圖像中選取最近的像素作為輸出像素。它忽略了所有其他的像素。
BILINEAR:雙線性濾波。 在輸入圖像的2x2矩陣上進(jìn)行線性插值。注意:PIL的當(dāng)前版本,做下采樣時該濾波器使用了固定輸入模板。
BICUBIC:雙立方濾波。 在輸入圖像的4x4矩陣上進(jìn)行立方插值。注意:PIL的當(dāng)前版本,做下采樣時該濾波器使用了固定輸入模板。
ANTIALIAS:平滑濾波。 這是PIL 1.1.3版本中新的濾波器。對所有可以影響輸出像素的輸入像素進(jìn)行高質(zhì)量的重采樣濾波,以計算輸出像素值。在當(dāng)前的PIL版本中,這個濾波器只用于改變尺寸和縮略圖方法。
注意:在當(dāng)前的PIL版本中,ANTIALIAS濾波器是下采樣 (例如,將一個大的圖像轉(zhuǎn)換為小圖) 時唯一正確的濾波器。 BILIEAR和BICUBIC濾波器使用固定的輸入模板 ,用于固定比例的幾何變換和上采樣是最好的。Image模塊中的方法resize()和thumbnail()用到了濾波器。
resize()方法的定義為:resize(size, filter=None)= image
resize()方法的使用如下:
對參數(shù)filter不賦值的話,resize()方法默認(rèn)使用NEAREST濾波器。如果要使用其他濾波器可以通過下面的方法來實(shí)現(xiàn):
thumbnail ()方法的定義為:im.thumbnail(size, filter=None)
thumbnail ()方法的使用如下:
這里需要說明的是,方法thumbnail()需要保持寬高比,對于size=(200,200)的輸入?yún)?shù),其最終的縮略圖尺寸為(182, 200)。
對參數(shù)filter不賦值的話,方法thumbnail()默認(rèn)使用NEAREST濾波器。如果要使用其他濾波器可以通過下面的方法來實(shí)現(xiàn):
Python-for-data-重新采樣和頻率轉(zhuǎn)換
重新采樣指的是將時間序列從一個頻率轉(zhuǎn)換到另一個頻率的過程。
但是也并不是所有的采樣方式都是屬于上面的兩種
pandas中使用resample方法來實(shí)現(xiàn)頻率轉(zhuǎn)換,下面是resample方法的參數(shù)詳解:
將數(shù)據(jù)聚合到一個規(guī)則的低頻上,例如將時間轉(zhuǎn)換為每個月,"M"或者"BM",將數(shù)據(jù)分成一個月的時間間隔。
每個間隔是半閉合的,一個數(shù)據(jù)只能屬于一個時間間隔。時間間隔的并集必須是整個時間幀
默認(rèn)情況下,左箱體邊界是包含的。00:00的值是00:00到00:05間隔內(nèi)的值
產(chǎn)生的時間序列按照每個箱體左邊的時間戳被標(biāo)記。
傳遞span class="mark"label="right"/span可以使用右箱體邊界標(biāo)記時間序列
向loffset參數(shù)傳遞字符串或者日期偏置
在金融數(shù)據(jù)中,為每個數(shù)據(jù)桶計算4個值是常見的問題:
通過span class="girk"ohlc聚合函數(shù)/span能夠得到四種聚合值列的DF數(shù)據(jù)
低頻轉(zhuǎn)到高頻的時候會形成缺失值
ffill() :使用前面的值填充, limit 限制填充的次數(shù)
downsample函數(shù):可以通過下采樣將原來的數(shù)據(jù)提取出來。 dataTx=rcosflt(dataTx1,fs/8,fs,'filter',num);表示將數(shù)據(jù)dataTx進(jìn)行8倍過采樣的滾降升余弦濾波,過采樣增加的點(diǎn)數(shù)為2*delay*(fs/fd),其中在原數(shù)據(jù)的開頭和結(jié)尾各一半, dataTx=rcosfl...
當(dāng)前文章:python下采樣函數(shù) python采集教程
網(wǎng)頁鏈接:http://vcdvsql.cn/article26/hejjcg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、面包屑導(dǎo)航、App設(shè)計、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站排名、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)