只需8招,搞定Pandas数据筛选与查询
今天聊聊Pandas數據篩選與查詢的一些操作,在數據分析的過程中通常要對數據進行清洗與處理,而其中比較重要和常見的操作就有對數據進行篩選與查詢。
目錄:
1. 案例數據預覽
2. 基礎操作
2.1. 切片[]
2.2. 索引選擇.iloc與.loc
2.3. 元素選擇.iat與.at
2.4. ?get與truncate
3. 進階操作
3.1. 邏輯篩選
3.2. 函數篩選
3.3. query
3.4. filter
1. 案例數據預覽
本次案例,我們繼續采用之前用到過的各地區GDP數據,數據信息大致如下,后臺回復GDP可以獲取哈。
In?[1]:?import?pandas?as?pdIn?[2]:?df?=?pd.read_excel(r'各地區生產總值.xlsx')In?[3]:?df.head() Out[3]:?地區????2020年????2019年????2018年????2017年????2016年 0?????北京市??36102.6??35445.1??33106.0??29883.0??27041.2 1?????天津市??14083.7??14055.5??13362.9??12450.6??11477.2 2?????河北省??36206.9??34978.6??32494.6??30640.8??28474.1 3?????山西省??17651.9??16961.6??15958.1??14484.3??11946.4 4??內蒙古自治區??17359.8??17212.5??16140.8??14898.1??13789.3In?[4]:?df.info() <class?'pandas.core.frame.DataFrame'> RangeIndex:?32?entries,?0?to?31 Data?columns?(total?6?columns):#???Column??Non-Null?Count??Dtype?? ---??------??--------------??-----??0???地區??????32?non-null?????object?1???2020年???31?non-null?????float642???2019年???31?non-null?????float643???2018年???31?non-null?????float644???2017年???31?non-null?????float645???2016年???31?non-null?????float64 dtypes:?float64(5),?object(1) memory?usage:?1.6+?KB我們看看描述統計情況,然后在后續做篩選查詢的時候好演示
In?[5]:?df.describe() Out[5]:?2020年??????????2019年?????????2018年?????????2017年?????????2016年 count??????31.000000??????31.000000?????31.000000?????31.000000?????31.000000 mean????32658.551613???31687.758065??29487.661290??26841.819355??24224.148387 std?????26661.811640???25848.652250??24136.181387??22161.575235??20008.278500 min??????1902.700000????1697.800000???1548.400000???1349.000000???1173.000000 25%?????13940.650000???13826.300000??13104.700000??12381.800000??11634.800000 50%?????25115.000000???24667.300000??22716.500000??20210.800000??18388.600000 75%?????42612.500000???41110.350000??37508.750000??33835.250000??30370.250000 max????110760.900000??107986.900000??99945.200000??91648.700000??82163.200000可以看到,有效數據有30多條,為了讓數據顯示好一點,我們可以設置最多顯示6行
In?[6]:?pd.set_option('display.max_rows',?6)?#最多顯示6行In?[7]:?df Out[7]:?地區????2020年????2019年????2018年????2017年????2016年 0????????北京市??36102.6??35445.1??33106.0??29883.0??27041.2 1????????天津市??14083.7??14055.5??13362.9??12450.6??11477.2 2????????河北省??36206.9??34978.6??32494.6??30640.8??28474.1 ..???????...??????...??????...??????...??????...??????... 29???寧夏回族自治區???3920.5???3748.5???3510.2???3200.3???2781.4 30??新疆維吾爾自治區??13797.6??13597.1??12809.4??11159.9???9630.8 31???????臺灣省??????NaN??????NaN??????NaN??????NaN??????NaN[32?rows?x?6?columns]接下來,我們開始演示數據的篩選與查詢吧
2. 基礎操作
一般來說,數據篩選有選擇行、列或者指定位置的值等
2.1. 切片[]
切片這玩意就和python的列表數據的切片操作很相似
選擇某一列
注意:如果列名為 2020年或者2020 年,則無法采用屬性形式,因為這種操作的變量名不能以數字開頭或存在空格
df['地區']??#?切片形式 Out[8]:? 0??????????北京市 1??????????天津市 2??????????河北省29?????寧夏回族自治區 30????新疆維吾爾自治區 31?????????臺灣省 Name:?地區,?Length:?32,?dtype:?objectIn?[9]:?df.地區??#?屬性形式 Out[9]:? 0??????????北京市 1??????????天津市 2??????????河北省...??? 29?????寧夏回族自治區 30????新疆維吾爾自治區 31?????????臺灣省 Name:?地區,?Length:?32,?dtype:?objectIn?[10]:?#?如果列名為?2020年或者2020?年,則無法采用屬性形式,因為這種操作的變量名不能以數字開頭或存在空格...:?df.2020年File?"C:\Users\Gdc\AppData\Local\Temp/ipykernel_6832/3948025585.py",?line?2df.2020年^ SyntaxError:?invalid?syntax切片操作
切片里是索引位置,篩選的是對應的行
同樣如果我們在切片里是列名組成的列表,則可以篩選出這些列
對于只有一列的情況,切片[]是列名構成的列表返回結果類型分別是DataFrame,反之則是Series
2.2. 索引選擇.iloc與.loc
按照索引有兩種篩選方式,iloc和loc
df.iloc[行表達式, 列表達式],兩個表達式只支持數字切片形式:行表達式篩選行、列表達式篩選列
df.loc[行表達式, 列表達式],兩個表達式其實是對行列索引名稱的選擇:行表達式篩選行、列表達式篩選列
當然,這兩種篩選方式的表達式也支持條件
iloc[]
大家可以根據方法名稱來區分是針對自然索引位置 還是 索引名稱,比如iloc多個i嘛,i就是數字碼,所以它針對的是自然索引位置
In?[18]:?df.iloc[0]?#?返回是Series,0是自然索引位置 Out[18]:? 地區???????????北京市 2020年????36102.6 2019年????35445.1 2018年????33106.0 2017年????29883.0 2016年????27041.2 Name:?0,?dtype:?objectIn?[19]:?df.iloc[[0]]?#?返回是一行,0是自然索引位置 Out[19]:?地區????2020年????2019年????2018年????2017年????2016年 0??北京市??36102.6??35445.1??33106.0??29883.0??27041.2In?[20]:?df.iloc[:2]?#?前兩行數據 Out[20]:?地區????2020年????2019年????2018年????2017年????2016年 0??北京市??36102.6??35445.1??33106.0??29883.0??27041.2 1??天津市??14083.7??14055.5??13362.9??12450.6??11477.2In?[21]:?df.iloc[:2,[0,1,3]]?#?前兩行,第0-1-3列數據 Out[21]:?地區????2020年????2018年 0??北京市??36102.6??33106.0 1??天津市??14083.7??13362.9In?[22]:?df.iloc[1,1]?#?自然索引為1,第1列的數據(也就是天津2020年的gdp),一般用?.iat Out[22]:?14083.7loc[]
區別于iloc,它根據索引的名稱來進行篩選,如果沒有設置索引一般就是自然索引
In?[23]:?df1?=?df.set_index('地區')?#?我們設置?地區字段?列?為索引In?[24]:?df1 Out[24]:?2020年????2019年????2018年????2017年????2016年 地區??????????????????????????????????????????????????? 北京市???????36102.6??35445.1??33106.0??29883.0??27041.2 天津市???????14083.7??14055.5??13362.9??12450.6??11477.2 河北省???????36206.9??34978.6??32494.6??30640.8??28474.1 ...???????????...??????...??????...??????...??????... 寧夏回族自治區????3920.5???3748.5???3510.2???3200.3???2781.4 新疆維吾爾自治區??13797.6??13597.1??12809.4??11159.9???9630.8 臺灣省???????????NaN??????NaN??????NaN??????NaN??????NaN[32?rows?x?5?columns]In?[25]:?df1.loc['北京市']?#?選擇?索引名為北京市的數據 Out[25]:? 2020年????36102.6 2019年????35445.1 2018年????33106.0 2017年????29883.0 2016年????27041.2 Name:?北京市,?dtype:?float64In?[26]:?df1.loc['北京市':'河北省','2020年']?#?選擇?索引名稱?在北京市到河北省,列名為?2020年的數據 Out[26]:? 地區 北京市????36102.6 天津市????14083.7 河北省????36206.9 Name:?2020年,?dtype:?float64In?[27]:?df1.loc['北京市':'河北省','2019年':]?#?選擇?索引名稱?在北京市到河北省,列名在?2019年及之后的數據 Out[27]:?2019年????2018年????2017年????2016年 地區????????????????????????????????????? 北京市??35445.1??33106.0??29883.0??27041.2 天津市??14055.5??13362.9??12450.6??11477.2 河北省??34978.6??32494.6??30640.8??28474.1In?[28]:?df1.loc[['北京市','上海市','重慶市','天津市'],['2020年','2019年']]?#?選擇索引名為?北京、上海、重慶、天津?2020年及2019年數據 Out[28]:?2020年????2019年 地區??????????????????? 北京市??36102.6??35445.1 上海市??38700.6??37987.6 重慶市??25002.8??23605.8 天津市??14083.7??14055.5In?[29]:?df1.loc['北京市','2020年']?#?選擇?索引名為?北京市,列名為2020年?額數據(就是坐標元素值) Out[29]:?36102.62.3. 元素選擇.iat與.at
按坐標其實可以通過上述的按索引進行,這里還可以用.iat和.at來實現,和按索引類型一個是自然索引值一個是索引名稱
In?[30]:?df.iat[0,2] Out[30]:?35445.1In?[31]:?df1.at['北京市','2019年'] Out[31]:?35445.1In?[32]:?df.地區.at[3] Out[32]:?'山西省'In?[33]:?#?其實還有以下方式...:?df1['2019年']['北京市'] Out[33]:?35445.1In?[34]:?df['2019年'][0] Out[34]:?35445.12.4. ?get與truncate
df.get(key, default=None)類似python字典里的get方法
df.truncate(before=None, after=None, axis=None, copy: 'bool_t' = True),返回區間數據
get()
對于DataFrame數據來說返回key列的值,如果key不存在就返回默認值。
Signature:?df.get(key,?default=None) Docstring: Get?item?from?object?for?given?key?(ex:?DataFrame?column).Returns?default?value?if?not?found.對于Series數據來說,返回key索引的值,不存在就返回默認值。
In?[35]:?df.get('地區','無數據') Out[35]:? 0??????????北京市 1??????????天津市 2??????????河北省...??? 29?????寧夏回族自治區 30????新疆維吾爾自治區 31?????????臺灣省 Name:?地區,?Length:?32,?dtype:?objectIn?[36]:?df.get('2015年','無數據') Out[36]:?'無數據'In?[37]:?df.地區.get(0,'無數據') Out[37]:?'北京市'In?[38]:?df.地區.get(100,'無數據') Out[38]:?'無數據'truncate()
將索引代入before和after,截取這區間的數據,支持對行和列操作
In?[39]:?df.truncate(before=0,after=4) Out[39]:?地區????2020年????2019年????2018年????2017年????2016年 0?????北京市??36102.6??35445.1??33106.0??29883.0??27041.2 1?????天津市??14083.7??14055.5??13362.9??12450.6??11477.2 2?????河北省??36206.9??34978.6??32494.6??30640.8??28474.1 3?????山西省??17651.9??16961.6??15958.1??14484.3??11946.4 4??內蒙古自治區??17359.8??17212.5??16140.8??14898.1??13789.3In?[40]:?df.truncate(before='2018年',after='2020年',axis=1) Out[40]:?2020年????2019年????2018年 0???36102.6??35445.1??33106.0 1???14083.7??14055.5??13362.9 2???36206.9??34978.6??32494.6 ..??????...??????...??????... 29???3920.5???3748.5???3510.2 30??13797.6??13597.1??12809.4 31??????NaN??????NaN??????NaN[32?rows?x?3?columns]以上屬于數據篩選與查詢的基礎操作,接下來我們介紹進階操作
3. 進階操作
基礎操作部分我們介紹的是比較簡單的數據篩選操作,實際的數據清洗與處理時我們更多的是需要根據更加復雜的組合條件來查詢數據進行篩選。這一節,我們就來一一介紹一下。
3.1. 邏輯篩選
邏輯刷選這里是指按照一定的邏輯條件來進行數據的篩選,比如滿足某條件的行、列數據等等
In?[41]:?df[df['地區']?==?'北京市']?#?地區是北京市的數據 Out[41]:?地區????2020年????2019年????2018年????2017年????2016年 0??北京市??36102.6??35445.1??33106.0??29883.0??27041.2In?[42]:?df[df['地區'].str.contains('市')]?#?地區名稱?含關鍵字?市?的數據? Out[42]:?地區????2020年????2019年????2018年????2017年????2016年 0???北京市??36102.6??35445.1??33106.0??29883.0??27041.2 1???天津市??14083.7??14055.5??13362.9??12450.6??11477.2 8???上海市??38700.6??37987.6??36011.8??32925.0??29887.0 21??重慶市??25002.8??23605.8??21588.8??20066.3??18023.0In?[43]:?df[df['地區'].str.contains('市|自治區')]?#?地區名稱含關鍵字?市或自治區?的數據 Out[43]:?地區????2020年????2019年????2018年????2017年????2016年 0????????北京市??36102.6??35445.1??33106.0??29883.0??27041.2 1????????天津市??14083.7??14055.5??13362.9??12450.6??11477.2 4?????內蒙古自治區??17359.8??17212.5??16140.8??14898.1??13789.3 ..???????...??????...??????...??????...??????...??????... 25?????西藏自治區???1902.7???1697.8???1548.4???1349.0???1173.0 29???寧夏回族自治區???3920.5???3748.5???3510.2???3200.3???2781.4 30??新疆維吾爾自治區??13797.6??13597.1??12809.4??11159.9???9630.8[9?rows?x?6?columns]In?[44]:?df[df['地區'].isin(['北京市','湖北省','江蘇省'])]?#?地區名稱?在北京市、湖北省、江蘇省的數據 Out[44]:?地區?????2020年????2019年????2018年????2017年????2016年 0???北京市???36102.6??35445.1??33106.0??29883.0??27041.2 9???江蘇省??102719.0??98656.8??93207.6??85869.8??77350.9 16??湖北省???43443.5??45429.0??42022.0??37235.0??33353.0In?[45]:?df[~df['地區'].isin(['北京市','湖北省','江蘇省'])]?#?地區名稱?不在北京市、湖北省、江蘇省的數據 Out[45]:?地區????2020年????2019年????2018年????2017年????2016年 1????????天津市??14083.7??14055.5??13362.9??12450.6??11477.2 2????????河北省??36206.9??34978.6??32494.6??30640.8??28474.1 3????????山西省??17651.9??16961.6??15958.1??14484.3??11946.4 ..???????...??????...??????...??????...??????...??????... 29???寧夏回族自治區???3920.5???3748.5???3510.2???3200.3???2781.4 30??新疆維吾爾自治區??13797.6??13597.1??12809.4??11159.9???9630.8 31???????臺灣省??????NaN??????NaN??????NaN??????NaN??????NaN[29?rows?x?6?columns]除了上面用切片[]的形式,同樣可以用loc[]的形式
In?[46]:?df.loc[df['地區'].isin(['北京市','湖北省','江蘇省'])] Out[46]:?地區?????2020年????2019年????2018年????2017年????2016年 0???北京市???36102.6??35445.1??33106.0??29883.0??27041.2 9???江蘇省??102719.0??98656.8??93207.6??85869.8??77350.9 16??湖北省???43443.5??45429.0??42022.0??37235.0??33353.0對于iloc[]來說,則需要是對自然索引值的判斷
In?[47]:?df.iloc[df.index==9] Out[47]:?地區?????2020年????2019年????2018年????2017年????2016年 9??江蘇省??102719.0??98656.8??93207.6??85869.8??77350.9我們還可以進行更復雜的邏輯判斷去篩選想要的數據,在進行 或(|) 且(&) 非(~) 邏輯判斷的時候,每個獨立的邏輯判斷需要用括號括起來
In?[48]:?df[df['2020年']<df['2019年']]?#?2020年GDP小于2019年GDP的省份 Out[48]:?地區????2020年????2019年????2018年????2017年????2016年 16??湖北省??43443.5??45429.0??42022.0??37235.0??33353.0In?[49]:?df[(df['2020年']>30000)?&...:????(df['2019年']>30000)...:???]?#?最近連續2年GDP超過3萬億的地區 Out[49]:?地區?????2020年?????2019年????2018年????2017年????2016年 0???北京市???36102.6???35445.1??33106.0??29883.0??27041.2 2???河北省???36206.9???34978.6??32494.6??30640.8??28474.1 8???上海市???38700.6???37987.6??36011.8??32925.0??29887.0 ..??...???????...???????...??????...??????...??????... 17??湖南省???41781.5???39894.1??36329.7??33828.1??30853.5 18??廣東省??110760.9??107986.9??99945.2??91648.7??82163.2 22??四川省???48598.8???46363.8??42902.1??37905.1??33138.5[13?rows?x?6?columns]我們還可以通過any和all對邏輯判斷后結果進行再次判斷,對于all來說需要都滿足才行,對于any來說只需要滿足一個即可,需要注意的是默認是0列方向,1是行方向
In?[50]:?df[(df[['2020年','2019年']]>30000).all(1)]?#?最近連續2年GDP超過3萬億的地區 Out[50]:?地區?????2020年?????2019年????2018年????2017年????2016年 0???北京市???36102.6???35445.1??33106.0??29883.0??27041.2 2???河北省???36206.9???34978.6??32494.6??30640.8??28474.1 8???上海市???38700.6???37987.6??36011.8??32925.0??29887.0 ..??...???????...???????...??????...??????...??????... 17??湖南省???41781.5???39894.1??36329.7??33828.1??30853.5 18??廣東省??110760.9??107986.9??99945.2??91648.7??82163.2 22??四川省???48598.8???46363.8??42902.1??37905.1??33138.5[13?rows?x?6?columns]In?[51]:?df[(df[['2020年','2019年']]>100000).all(1)]?#?最近2年有1年GDP超過10萬億 Out[51]:?地區?????2020年?????2019年????2018年????2017年????2016年 18??廣東省??110760.9??107986.9??99945.2??91648.7??82163.23.2. 函數篩選
函數篩選是指 我們在不管是切片還是索引選擇方式中,表達式還可以是lambda函數;此外,pandas也提供了一些比較函數可以用來進行數據篩選。
自定義lambda函數
df.loc[lambda?x?:?x['2020年']>50000,?['地區','2020年','2019年']]?#?篩選2020年GDP超過5萬億且只選?地區、2020年和2019年數據 Out[53]:?地區?????2020年?????2019年 9???江蘇省??102719.0???98656.8 10??浙江省???64613.3???62462.0 14??山東省???73129.0???70540.5 15??河南省???54997.1???53717.8 18??廣東省??110760.9??107986.9In?[54]:?import?reIn?[55]:?df.loc[:,?lambda?x?:?[i?for?i?in?df.columns[1:]?if?int(re.findall('\d+',i)[0])<2020]]?#?篩選列名滿足條件的列 Out[55]:?2019年????2018年????2017年????2016年 0???35445.1??33106.0??29883.0??27041.2 1???14055.5??13362.9??12450.6??11477.2 2???34978.6??32494.6??30640.8??28474.1 ..??????...??????...??????...??????... 29???3748.5???3510.2???3200.3???2781.4 30??13597.1??12809.4??11159.9???9630.8 31??????NaN??????NaN??????NaN??????NaN[32?rows?x?4?columns]比較函數
panda有一些比較函數,我們可以將邏輯表達式替換為比較函數形式
In?[56]:?df[df['地區'].eq('北京市')]?#?等于 Out[56]:?地區????2020年????2019年????2018年????2017年????2016年 0??北京市??36102.6??35445.1??33106.0??29883.0??27041.2In?[57]:?df[df['地區'].ne('北京市')]?#?不等于 Out[57]:?地區????2020年????2019年????2018年????2017年????2016年 1????????天津市??14083.7??14055.5??13362.9??12450.6??11477.2 2????????河北省??36206.9??34978.6??32494.6??30640.8??28474.1 3????????山西省??17651.9??16961.6??15958.1??14484.3??11946.4 ..???????...??????...??????...??????...??????...??????... 29???寧夏回族自治區???3920.5???3748.5???3510.2???3200.3???2781.4 30??新疆維吾爾自治區??13797.6??13597.1??12809.4??11159.9???9630.8 31???????臺灣省??????NaN??????NaN??????NaN??????NaN??????NaN[31?rows?x?6?columns]In?[58]:?df[df['2020年'].lt(10000)]?#?小于 Out[58]:?地區???2020年???2019年???2018年???2017年???2016年 20??????海南省??5532.4??5330.8??4910.7??4497.5??4090.2 25????西藏自治區??1902.7??1697.8??1548.4??1349.0??1173.0 27??????甘肅省??9016.7??8718.3??8104.1??7336.7??6907.9 28??????青海省??3005.9??2941.1??2748.0??2465.1??2258.2 29??寧夏回族自治區??3920.5??3748.5??3510.2??3200.3??2781.4In?[59]:?df[df['2020年'].le(5532.4)]?#?小于等于 Out[59]:?地區???2020年???2019年???2018年???2017年???2016年 20??????海南省??5532.4??5330.8??4910.7??4497.5??4090.2 25????西藏自治區??1902.7??1697.8??1548.4??1349.0??1173.0 28??????青海省??3005.9??2941.1??2748.0??2465.1??2258.2 29??寧夏回族自治區??3920.5??3748.5??3510.2??3200.3??2781.4In?[60]:?df[df['2020年'].gt(50000)]?#?大于 Out[60]:?地區?????2020年?????2019年????2018年????2017年????2016年 9???江蘇省??102719.0???98656.8??93207.6??85869.8??77350.9 10??浙江省???64613.3???62462.0??58002.8??52403.1??47254.0 14??山東省???73129.0???70540.5??66648.9??63012.1??58762.5 15??河南省???54997.1???53717.8??49935.9??44824.9??40249.3 18??廣東省??110760.9??107986.9??99945.2??91648.7??82163.2In?[61]:?df[df['2020年'].ge(62462.0)]?#?大于等于 Out[61]:?地區?????2020年?????2019年????2018年????2017年????2016年 9???江蘇省??102719.0???98656.8??93207.6??85869.8??77350.9 10??浙江省???64613.3???62462.0??58002.8??52403.1??47254.0 14??山東省???73129.0???70540.5??66648.9??63012.1??58762.5 18??廣東省??110760.9??107986.9??99945.2??91648.7??82163.2對于isin(),還可以傳入字典,key為列名,value為待匹配的值(這個大家可以構建數據試試)
3.3. query
Signature:?df.query(expr:?'str',?inplace:?'bool'?=?False,?**kwargs) Docstring: Query?the?columns?of?a?DataFrame?with?a?boolean?expression.query()的很高校的查詢方法,其表達式是一個字符串,我們在《再推薦幾個好用的pandas函數,繼續加快你數據處理的速度》介紹過,大家可前往了解,這里稍微介紹下
在引號中,如果列名是數字開頭或者含有空格,則需要用`反引號標識
其他情況下的列名直接寫即可,用于篩選對比的對象如果是字符串則需要用引號
我們還可以通過@來引入變量
3.4. filter
Signature: df.filter(items=None,like:?'str?|?None'?=?None,regex:?'str?|?None'?=?None,axis=None, )?->?'FrameOrSeries' Docstring: Subset?the?dataframe?rows?or?columns?according?to?the?specified?index?labels.Note?that?this?routine?does?not?filter?a?dataframe?on?its contents.?The?filter?is?applied?to?the?labels?of?the?index.df.filter()可以對行和列名進行篩選,支持模糊匹配和正則表達式
In?[67]:?df.filter(items=['2020年','2016年'])?#?選擇兩列 Out[67]:?2020年????2016年 0???36102.6??27041.2 1???14083.7??11477.2 2???36206.9??28474.1 ..??????...??????... 29???3920.5???2781.4 30??13797.6???9630.8 31??????NaN??????NaN[32?rows?x?2?columns]In?[68]:?df.filter(regex='年')?#?列名稱含?年?的列 Out[68]:?2020年????2019年????2018年????2017年????2016年 0???36102.6??35445.1??33106.0??29883.0??27041.2 1???14083.7??14055.5??13362.9??12450.6??11477.2 2???36206.9??34978.6??32494.6??30640.8??28474.1 ..??????...??????...??????...??????...??????... 29???3920.5???3748.5???3510.2???3200.3???2781.4 30??13797.6??13597.1??12809.4??11159.9???9630.8 31??????NaN??????NaN??????NaN??????NaN??????NaN[32?rows?x?5?columns]In?[69]:?df1.filter(regex='市',?axis=0)?#?索引名含?市?的數據 Out[69]:?2020年????2019年????2018年????2017年????2016年 地區?????????????????????????????????????????????? 北京市??36102.6??35445.1??33106.0??29883.0??27041.2 天津市??14083.7??14055.5??13362.9??12450.6??11477.2 上海市??38700.6??37987.6??36011.8??32925.0??29887.0 重慶市??25002.8??23605.8??21588.8??20066.3??18023.0In?[70]:?df1.filter(regex='^江',?axis=0)?#?索引名中以江開頭的 Out[70]:?2020年????2019年????2018年????2017年????2016年 地區??????????????????????????????????????????????? 江蘇省??102719.0??98656.8??93207.6??85869.8??77350.9 江西省???25691.5??24667.3??22716.5??20210.8??18388.6In?[71]:?df1.filter(regex='自治區$',?axis=0)?#?索引名中以自治區結尾的 Out[71]:?2020年????2019年????2018年????2017年????2016年 地區??????????????????????????????????????????????????? 內蒙古自治區????17359.8??17212.5??16140.8??14898.1??13789.3 廣西壯族自治區???22156.7??21237.1??19627.8??17790.7??16116.6 西藏自治區??????1902.7???1697.8???1548.4???1349.0???1173.0 寧夏回族自治區????3920.5???3748.5???3510.2???3200.3???2781.4 新疆維吾爾自治區??13797.6??13597.1??12809.4??11159.9???9630.8In?[72]:?df1.filter(like='北',axis=0)?#?索引名中有?北?的 Out[72]:?2020年????2019年????2018年????2017年????2016年 地區?????????????????????????????????????????????? 北京市??36102.6??35445.1??33106.0??29883.0??27041.2 河北省??36206.9??34978.6??32494.6??30640.8??28474.1 湖北省??43443.5??45429.0??42022.0??37235.0??33353.0以上就是本次全部內容,希望對你有所幫助,如果你喜歡的話還希望能給個三連呀!歡迎在留言區吱一聲哦,說說你的想法哦。我們月底會給經常來留言打卡的同學送書10本,記得常來指導工作哦!
推薦閱讀:
入門:?最全的零基礎學Python的問題? |?零基礎學了8個月的Python?|?實戰項目?|學Python就是這條捷徑
量化:?定投基金到底能賺多少錢?? |?我用Python對去年800只基金的數據分析干貨:爬取豆瓣短評,電影《后來的我們》?|?38年NBA最佳球員分析|? ?從萬眾期待到口碑撲街!唐探3令人失望? |?笑看新倚天屠龍記燈謎答題王?|用Python做個海量小姐姐素描圖碟中諜這么火,我用機器學習做個迷你推薦系統電影
趣味:彈球游戲? |?九宮格? |?漂亮的花?|?兩百行Python《天天酷跑》游戲!
AI:?會做詩的機器人給圖片上色?|?預測收入?|?碟中諜這么火,我用機器學習做個迷你推薦系統電影
小工具:?Pdf轉Word,輕松搞定表格和水印!?|?一鍵把html網頁保存為pdf!|??再見PDF提取收費!?|?用90行代碼打造最強PDF轉換器,word、PPT、excel、markdown、html一鍵轉換?|?制作一款釘釘低價機票提示器!?|60行代碼做了一個語音壁紙切換器天天看小姐姐!|
總結
以上是生活随笔為你收集整理的只需8招,搞定Pandas数据筛选与查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(2354):image组件的基
- 下一篇: 前端学习(2388):封装请求模块