九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
與常用SQL語(yǔ)句對(duì)應(yīng)的pandas函數(shù)或方法有哪些?

在python中pandas工具包具有基本的數(shù)據(jù)管理功能,自然就有一些查詢pandas中數(shù)據(jù)結(jié)構(gòu)dataframe的常用函數(shù)。下面就看看,與常用的SQL語(yǔ)句對(duì)應(yīng)的pandas函數(shù)有哪些?

數(shù)據(jù)準(zhǔn)備

數(shù)據(jù)從SQL Server數(shù)據(jù)庫(kù)中獲取,使用符合SQL語(yǔ)法規(guī)則的語(yǔ)句查詢并獲取。在python中如何連接數(shù)據(jù)庫(kù)的方法,請(qǐng)點(diǎn)擊閱讀 這篇文章

  • 與數(shù)據(jù)庫(kù)建立連接
import pyodbcimport pandas as pdimport numpy as npconnection_string = ('Driver={SQL Server Native Client 11.0};' 'Server=Your_Server_Name;' 'Database=My_Database_Name;' 'UID=Your_User_ID;' 'PWD=Your_Password;')connection = pyodbc.connect(connection_string)
  • 獲取指定條件的數(shù)據(jù),例如讀取My_Database_Name數(shù)據(jù)庫(kù)中State_Population 數(shù)據(jù)表的前10條記錄,
population = pd.read_sql('SELECT TOP(10) * FROM State_Population', connection)

或者寫成:

query = 'SELECT * FROM STATE_AREAS WHERE [area (sq. mi)] > 100000'area = pd.read_sql(query, connection)

以上方法中,pd.read_sql 函數(shù)的功能與 SQL語(yǔ)句'Select * from ....'相對(duì)應(yīng),并且以dataframe格式查詢輸出的結(jié)果area, 由此即可在python用pandas函數(shù)對(duì)area進(jìn)行更多的操作。

SQL查詢語(yǔ)句一般包括以下組成部分:

  • SELECT column_name(s)
  • FROM table_name
  • WHERE condition
  • GROUP BY column_name(s)
  • HAVING condition
  • ORDER BY column_name(s)

各組成部分在pandas中都有對(duì)應(yīng)的函數(shù)。從My_Database_Name 數(shù)據(jù)庫(kù)中的三個(gè)數(shù)據(jù)表,讀取其中兩個(gè)數(shù)據(jù)表(State_Population和STATE_AREAS)的部分內(nèi)容,都是dataframe格式,命名為:population 和 area。下文中將使用population,演示pandas中與SQL查詢有相同功能的函數(shù)。先看看population包括的數(shù)據(jù)內(nèi)容:

population.head()

輸出結(jié)果如下圖:

(一)在pandas中與 SELECT * FROM State_Population;相對(duì)應(yīng)的方法(1-4)

(1) 在python中可讀取 dataframe

population

結(jié)果如下圖:

(2)SELECT year FROM State_Population; 對(duì)應(yīng)的pandas函數(shù):pd.DataFrame(population.year)

pd.DataFrame(population.year)

輸出結(jié)果如下圖:

(3)SELECT population, year FROM State_Population; 對(duì)應(yīng)的pandas方法:population[['population', 'year']]

population[['population', 'year']]

輸出結(jié)果:

(4)pandas.loc方法

該方法一般格式為:df.loc([row names], [column names]);獲取給定列的所有行數(shù)據(jù),可以用“:”替代 [row names] ,如:df.loc(: , [column names])。

population.loc[:,['population', 'year']]

輸出結(jié)果與方法(3)相同:

(二)在python中與SELECT * FROM State_Population WHERE year = 2010;語(yǔ)句相對(duì)應(yīng)的方法(5--8)。

(5)可使用切片方法(slicing)

population[population.year == 2010]

輸出結(jié)果如下圖:

(6) pandas.loc()函數(shù)

population.loc[population.year == 2010,:]

輸出結(jié)果與(5)相同,略。

(7)pandas.query()函數(shù)

population.query('year == 2010')

輸出結(jié)果與(5)相同,略。

(8)lambda函數(shù)

population[population.apply(lambda x: x['year'] == 2010, axis=1)]

輸出結(jié)果與(5)相同,略。

(三)在python中,與SELECT state/region, population, year FROM State_Population WHERE year = 2010 or 2012 and ages = under18; 相對(duì)應(yīng)的方法(9--12)。

(9)索引(indexing)和切片方法(slicing)

population[(population.year.isin([2010, 2012])) & (population.ages == 'under18')][['state/region', 'population', 'year']]

輸出結(jié)果如下圖:

(10)pandas.loc()方法

population.loc[(population.year.isin([2010, 2012])) & (population.ages == 'under18'),['state/region', 'population', 'year']]

輸出結(jié)果與(9)相同,略。

(11)pandas.query()方法

population.query('(year==2010 | year==2012) & ages == 'under18'')[['state/region', 'population', 'year']]

輸出結(jié)果與(9)相同,略。

(12)使用lambda函數(shù)

population[population.apply(lambda x: (x['year'] in [2010, 2012]) & (x['ages'] == 'under18'), axis=1)]

輸出結(jié)果與(9)相同,略。

(四)在python中,與SELECT * FROM State_Population WHERE ages = total GROUP BY state/region HAVING AVG(population) > 10000000; 語(yǔ)句相對(duì)應(yīng)的方法。

population.groupby(by = 'state/region')

輸出結(jié)果如下圖:

population.groupby(by = ['state/region', 'year'])

輸出結(jié)果如下圖:

population.groupby(by = ['state/region', 'year']).count()

輸出結(jié)果如下圖:

還可以把分組結(jié)果賦給一個(gè)變量:grouped

grouped = population.groupby(by = ['state/region', 'year'])

(13)pandas中的groupby和aggregate方法

df = pd.DataFrame(population.loc[population.ages == 'total', :].groupby(by = 'state/region').aggregate('population').mean())df.loc[df.population > 10000000, :]

輸出結(jié)果如下圖:

(14)python中用sort_values()排序

python中與SELECT * FROM State_Population WHERE ages = total GROUP BY state/region HAVING AVG(population) > 10000000 ORDER BY population; 對(duì)應(yīng)的方法

df = pd.DataFrame(population.loc[population.ages == 'total', :].groupby(by = 'state/region').aggregate('population').mean())df.loc[df.population > 10000000, :].sort_values(by = 'population')

輸出結(jié)果如下圖:

使用 “ascending = False” 參數(shù)的結(jié)果:

(15)pandas提供的多列排序

grouped = population.groupby(by = ['state/region', 'year']).mean()grouped

輸出結(jié)果如下圖:

對(duì)分類后的數(shù)據(jù)表進(jìn)行排序,

grouped.sort_values(by = ['year', 'population'], ascending=[True, False])
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
【Python實(shí)戰(zhàn)】Pandas:讓你像寫SQL一樣做數(shù)據(jù)分析(一)
pandas學(xué)習(xí)
利用Python進(jìn)行數(shù)據(jù)分析:【Pandas】(Series+DataFrame)
用python做數(shù)據(jù)分析4|pandas庫(kù)介紹之DataFrame基本操作
Pandas 用法總結(jié)
使用pandas做數(shù)據(jù)分析,掌握這些函數(shù)就夠了
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服