20200602題目一

前言

以下為個人理解轻庆,未必正確竹海。歡迎大家討論和指正。

操作題目

1彼绷、如何查看python已安裝的第三方庫(有兩種方法)

1.在cmd下輸入pip list回車
2.打開ANACONDA NAVIGATOR巍佑,選擇左邊的environments。之后在右邊選擇installed即可看到所有安裝的庫寄悯。(我的python是安裝anaconda的時候自帶的句狼,第一次用的時候是這個方法查看安裝了哪些庫)

2、Mysql特定版本 group by 后用 * 出錯 热某,報錯出現(xiàn) Error 1055 應(yīng)如何解決

沒遇到過,不知道怎么解決胳螟。

Mysql

1昔馋、語句效率,子查詢與連接后哪種效率更高糖耸?為什么秘遏?請寫出具體例子。(以經(jīng)典45道題為例)

連接查詢效率更高嘉竟。
因為子查詢首先要進(jìn)行一次查詢邦危,之后再以這次查詢的結(jié)果作為條件進(jìn)行查詢。這就已經(jīng)比連接方法多一次查詢了舍扰。其次倦蚪,子查詢要創(chuàng)建一個臨時表,會對性能產(chǎn)生影響边苹。

以45題中的3.查詢在 SC 表存在成績的學(xué)生信息為例
連接查詢:

select b.*
from sc a
left join student b
on a.sid = b.sid
group by b.sid;

子查詢:

select *
from student
where sid in (select sid from sc);
2陵且、left join 后的 on 條件1 and 條件2,與left join 后的 on 條件1 where 條件2个束,有什么區(qū)別慕购?

這個題目的關(guān)鍵在于兩點,第一left join會保留左表全部內(nèi)容(也就是說右邊可能會產(chǎn)生null值)茬底,第二where篩選和連接的執(zhí)行順序(先join連接沪悲,再where篩選)。

對于left join 后的 on 條件1 and 條件2阱表,因為是left join殿如,所以左表全部內(nèi)容都會顯示贡珊,右表能匹配上的內(nèi)容會匹配上并且顯示出來,匹配不上的部分會顯示null握截。這時候是單純的連接飞崖,沒有進(jìn)行where篩選,所以最后一條會有一個null值谨胞。

對于left join 后的 on 條件1 where 條件2固歪,這時候是先執(zhí)行l(wèi)eft join連接再執(zhí)行where篩選。在執(zhí)行l(wèi)eft join的時候胯努,因為只有條件1的限制而沒有where篩選的限制牢裳,右邊null值一樣會顯示。但是加上where條件2語句對前面的表進(jìn)行篩選的時候叶沛,只會保留符合where條件2的內(nèi)容蒲讯,所以這時候右邊的null值因為不符合條件2會被剔除。這時候的結(jié)果與第一種情況不同灰署,是不包含null值的判帮。

如果這個題目是inner join,那么兩種操作方式結(jié)果是一樣的溉箕,因為不存在null值晦墙。

Python

一、存在一份生成的數(shù)據(jù)
dates = pd.date_range('20130101', periods=6)
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
image.png

問題:
1肴茄、該生成的數(shù)據(jù)索引列的格式類型是什么晌畅?(直接回答)
2、有哪些方式可以查看數(shù)據(jù)類型寡痰?
3抗楔、如何查看索引的數(shù)據(jù)類型?
4拦坠、df.loc[‘2013-01-01’] 可以取出對應(yīng)第一條數(shù)據(jù)嗎连躏?
5、如果想要同時取 第一行和第三行數(shù)據(jù)贪婉,應(yīng)該如何處理反粥?

回答:
1、索引列的格式為DatetimeIndex疲迂,數(shù)據(jù)格式為datetime64才顿。
2、整體格式:type()尤蒿。內(nèi)部數(shù)據(jù)類型:.info()郑气,.dtypes。
3腰池、df.index
4尾组、可以
5忙芒、

from datetime import datetime
df.loc[[datetime.strptime('2013-01-01', '%Y-%m-%d'),datetime.strptime('2013-01-03', '%Y-%m-%d')]]

或者

df.iloc[[0,2]]
二、apply讳侨、applymap呵萨、map的區(qū)別是什么?適用場景是什么跨跨?請以上述數(shù)據(jù)搭配函數(shù)舉例試驗潮峦。

apply,applymap和map的主要區(qū)別在兩點勇婴,第一個是適用的對象忱嘹,第二個是產(chǎn)生作用的范圍。
具體說明如下:

· apply:可應(yīng)用于Series(對象)和DataFrame(對象)耕渴。應(yīng)用于Series時會對Series中的每一個元素(范圍)產(chǎn)生效果拘悦。應(yīng)用于DataFrame時,會應(yīng)用于DataFrame的每一行或者每一列(范圍)橱脸。此時础米,如果axis=0(默認(rèn)),則會把每一列(其實是一個Series)作為參數(shù)傳入apply里的函數(shù)添诉。如果椭盏,如果axis=1,則會把每一行(其實是一個Series)作為參數(shù)傳入apply里的函數(shù)吻商。
需要注意的是,返回每一個結(jié)果會組成一個Series糟红,要特別注意這個Series的索引艾帐。如果是axis=0,即按列傳入盆偿,返回的Series會是原本Dataframe的列名柒爸。如果axis=1,即按行傳入事扭,返回的Series會是原本Dataframe的行標(biāo)簽捎稚。

· map:應(yīng)用在單獨一個Series(對象)的每個元素中(范圍)

· applymap:應(yīng)用在DataFrame(對象)的每個元素中(范圍)

以下為搭配函數(shù)舉例:

dates = pd.date_range('20130101', periods=6)
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
image.png
Apply應(yīng)用于Series:

用于單獨一行的情況(單獨一行為Series對象)

df.loc['2013-01-01'].apply(lambda x:x+1)
image.png

用于單獨一列的情況(單獨一列也為Series對象)

df.A.apply(lambda x:x+1)
image.png
Apply應(yīng)用于DataFrame:
df.apply(max)
image.png
df.apply(lambda x:x+1)
image.png
Map用于Series:
df.loc['2013-01-01'].map(lambda x:x+1)
image.png
df.A.map(lambda x:x+1)
image.png
Applymap用于DataFrame:
df.applymap(lambda x:x+1)
image.png
通過以上分析,代碼及運(yùn)行結(jié)果求橄,有以下結(jié)論:

1.首先明確一個觀點今野,DataFrame中的單獨一行或者單獨一列是一個Series。
2.因此罐农,在Apply應(yīng)用于DataFrame單獨一行或者單獨一列時骤星,其實是應(yīng)用于一個Series黄锤。此時,Apply和Map的效果是一樣的茂浮。df.loc['2013-01-01'].apply(lambda x:x+1)df.loc['2013-01-01'].map(lambda x:x+1)運(yùn)行結(jié)果相同。df.A.apply(lambda x:x+1)df.A.map(lambda x:x+1)運(yùn)行結(jié)果也相同鹏倘。
3.但是如果Apply是直接對應(yīng)整個DataFrame發(fā)生作用,即對每一行或者每一列發(fā)生作用,那么結(jié)果與map不同旋圆。df.apply(lambda x:x+1)df.A.map(lambda x:x+1)不同。
4.Apply作用于整個DataFrame時麸恍,有些情況下結(jié)果與Applymap相同灵巧,需要視具體傳遞的函數(shù)決定。df.apply(lambda x:x+1)df.applymap(lambda x:x+1)結(jié)果相同或南,因為前者對每一列的每一個元素+1孩等,后者是對全部元素+1,從結(jié)果來看是等價的采够。但是df.apply(max)是特殊的肄方,它針對DataFrame的每一列返回每一列的最大值,這個是Applymap不具備的蹬癌。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末权她,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子逝薪,更是在濱河造成了極大的恐慌隅要,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件董济,死亡現(xiàn)場離奇詭異步清,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)虏肾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門廓啊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人封豪,你說我怎么就攤上這事谴轮。” “怎么了吹埠?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵第步,是天一觀的道長。 經(jīng)常有香客問我缘琅,道長粘都,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任刷袍,我火速辦了婚禮驯杜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘做个。我一直安慰自己鸽心,他們只是感情好滚局,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著顽频,像睡著了一般藤肢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上糯景,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天嘁圈,我揣著相機(jī)與錄音,去河邊找鬼蟀淮。 笑死最住,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的怠惶。 我是一名探鬼主播涨缚,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼策治!你這毒婦竟也來了脓魏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤通惫,失蹤者是張志新(化名)和其女友劉穎茂翔,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體履腋,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡珊燎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了遵湖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俐末。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖奄侠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情载矿,我是刑警寧澤垄潮,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站闷盔,受9級特大地震影響弯洗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜逢勾,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一牡整、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧溺拱,春花似錦逃贝、人聲如沸谣辞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泥从。三九已至,卻和暖如春沪摄,著一層夾襖步出監(jiān)牢的瞬間躯嫉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工杨拐, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留祈餐,地道東北人。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓哄陶,卻偏偏與公主長得像帆阳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子奕筐,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361