官方調(diào)研重磅發(fā)布香伴,Pandas或?qū)⒅貥?gòu)?

原文地址:2019 Pandas User Survey

為指引 Pandas 未來開發(fā)方向台汇,Pandas 官方團(tuán)隊(duì)于 2019 年夏搞了一次調(diào)研,這次調(diào)研歷時(shí) 15 天篱瞎,共有 1250 條反饋數(shù)據(jù)苟呐。問卷數(shù)據(jù)保存在 data 文件夾的 2019.csv.zip 文件里。

這里又學(xué)一招俐筋,原來 pandas 可以直接從壓縮文件里讀取數(shù)據(jù)文件牵素,原文用的是 .gz 文件,呆鳥這里用 .zip 也可以澄者。

下列代碼讀取問卷數(shù)據(jù)笆呆,并對 matplotlib、seaborn 的字體進(jìn)行設(shè)置粱挡,其中還包括了赠幕,如何在 macOS 里顯示中文。

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

%matplotlib inline

plt.rcParams['figure.dpi'] = 150

# 讓 matplotlib 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei']

# 讓 seaborn 的文字大一些
sns.set( font='SimHei', font_scale=1.2)

# # 讓 MacOS 下的 Matplotlib 與 Seaborn 支持中文
# plt.rcParams['font.family'] = ['Arial Unicode MS']
# sns.set_style('whitegrid',{'font.sans-serif':['Arial Unicode MS','Arial']})


# 用來正常顯示負(fù)號询筏,這里其實(shí)用不上
plt.rcParams['axes.unicode_minus'] = False

df = pd.read_csv("data/2019.csv.zip", parse_dates=['日期時(shí)間'], encoding="GBK")

# df.head()

答卷人分析

絕大多數(shù)答卷人都具有豐富的 pandas 使用經(jīng)驗(yàn)榕堰,使用頻率也很高。

order = [
    '少于 3 個(gè)月',
    '3 個(gè)月 至 1 年',
    '1 至 2 年',
    '3 至 5 年',
    '5 年以上',
]

sns.countplot(y='您用 pandas 多久了嫌套?',
              data=df, order=order,
              color='k').set(title="您用 pandas 多久了逆屡?",
                             ylabel="")
sns.despine()
order = [
    "剛開始用",
    "偶爾",
    "每周",
    "每天"
]

sns.countplot(y='pandas 使用頻率', data=df, order=order,
              color='k').set(title="pandas 使用頻率",
                             ylabel="")
sns.despine()

為了對比 Pandas 與 Python 的流行度,我們的問卷里提出了一些 Python 開發(fā)者調(diào)研問卷問過的問題踱讨。

90% 的答卷人把 Python 作為主開發(fā)語言魏蔗,Python 軟件基金會調(diào)研報(bào)告里的數(shù)據(jù)為 84%。

pct_format = "{:0.2%}".format

df['Python 是您的主打語言嗎勇蝙?'].str.replace(
    "否.*", "否").value_counts(normalize=True).apply(pct_format)
是    90.67%
否     9.33%
Name: Python 是您的主打語言嗎沫勿?, dtype: object

數(shù)據(jù)顯示 Windows 用戶居多。

oses = [
    "Linux",
    "Windows",
    "MacOS"
]
df['您用哪種操作系統(tǒng)味混?'].str.split(';').explode().value_counts().div(
    len(df)).loc[oses].apply(pct_format)
Linux      61.57%
Windows    60.21%
MacOS      42.75%
Name: 您用哪種操作系統(tǒng)产雹?, dtype: object

這里用 0.25 版推出的 explode 方法定義了個(gè)函數(shù)。

def split_and_explode(s):
    return s.str.split(";").explode().to_frame()

conda 是最流行的虛擬環(huán)境工具翁锡。

replace = {
    "否蔓挖,我不用虛擬環(huán)境": "否"
}

col = '您是否用過下列 Python 虛擬環(huán)境工具?(多選)'

sns.countplot(y=col,
              data=split_and_explode(df[col]).replace(replace),
              color='k').set(title='您是否用過下列 Python 虛擬環(huán)境工具馆衔?',
                             ylabel="")
sns.despine()

絕大多數(shù)答卷人只用 Python 3瘟判。

df['Python 2 還是 3怨绣?'].value_counts(normalize=True).rename(
    index={"2;3": "2 & 3"}).apply(pct_format)
3        92.39%
2 & 3     6.80%
2         0.81%
Name: Python 2 還是 3?, dtype: object

Pandas API

開源軟件團(tuán)隊(duì)很難了解用戶實(shí)際愛用哪些功能拷获,這次調(diào)研篮撑,我們特地提了一些問題,了解了大家的喜好匆瓜。

CSV 與 Excel 是最流行的文件類型赢笨,真是讓人喜憂參半。

sns.countplot(y='您常用哪個(gè)讀寫器讀取數(shù)據(jù)驮吱?',
              data=df['您常用哪個(gè)讀寫器讀取數(shù)據(jù)茧妒?'].str.split(';').explode().to_frame(),
              color='k').set(title="您常用哪個(gè)讀寫器讀取數(shù)據(jù)?",
                             ylabel="")
sns.despine();

為了做好重構(gòu) pandas 內(nèi)核的準(zhǔn)備左冬,我們還調(diào)研了 100 列及以上大型 DataFrame 的處理情況桐筏。

sns.countplot(y='處理 100 列及以上大型 DataFrame 的頻率',
              data=df, color='k').set(title="處理大型 DataFrame 的頻率",
                                      ylabel="");
sns.despine()

Pandas 增加新擴(kuò)展類型的速度較慢。類別型(Categorical)是最常用的拇砰,此外梅忌,可空整數(shù)(Nullable Integer)與帶時(shí)區(qū)的 Datetime 也很常用。

sns.countplot(y='您常用的擴(kuò)展數(shù)據(jù)類型是什么毕匀?',
              data=split_and_explode(df['您常用的擴(kuò)展數(shù)據(jù)類型是什么铸鹰?']),
              color='k').set(title="您常用的擴(kuò)展數(shù)據(jù)類型是什么?",
                             ylabel="")
sns.despine();

我們還提出了一些問題皂岔,用以了解用戶最想要的功能蹋笼。

sns.countplot(y='您現(xiàn)在最想看到的改進(jìn)是什么?',
              data=df,
              color='k').set(title="您現(xiàn)在最想看到的改進(jìn)是什么躁垛?",
                             ylabel="")
sns.despine()
common = (df[df.columns[df.columns.str.startswith("迫切想要的功能")]]
          .rename(columns=lambda x: x.lstrip("迫切想要的功能  [").rstrip(r"]")))

counts = (
    common.apply(pd.value_counts)
    .T.stack().reset_index()
    .rename(columns={'level_0': '問題', 'level_1': "重要程度", 0: "關(guān)注數(shù)量"})
)

order = ["無關(guān)緊要", "還算有用", '至關(guān)重要']
g = (
    sns.FacetGrid(counts, col="問題", col_wrap=2,
                  aspect=1.5, sharex=False, height=3)
    .map(sns.barplot, "重要程度", "關(guān)注數(shù)量", order=order)
)

一眼就能看出來剖毯,優(yōu)化大規(guī)模數(shù)據(jù)集的處理能力是大家最想要的,從此圖還能觀測出:

  1. Pandas 文檔應(yīng)該加大力度推廣處理大規(guī)模數(shù)據(jù)集的支持庫教馆,如 Dask, vaex逊谋、 modin
  2. 從對原生字符串?dāng)?shù)據(jù)類型與更少的內(nèi)部復(fù)制需求來看土铺,優(yōu)化內(nèi)存效率也是要值得一做的事情胶滋。

緊接其后的優(yōu)化需求是整數(shù)缺失值,這個(gè)功能其實(shí)已經(jīng)在 Pandas 0.24 時(shí)已經(jīng)推出了悲敷,但還不是默認(rèn)方式究恤,與其它 pandas API 的兼容性也有待優(yōu)化。

與 NumPy 相比后德,pandas 略顯激進(jìn)部宿。在即將推出 1.0 版里,我們將廢棄很多功能,并對很多 API 進(jìn)行翻天覆地的改變理张,好在大部分人都能接受這樣的改變赫蛇。

df['Pandas 能滿足您的需求嗎'].value_counts(normalize=True).apply(pct_format)
是    94.89%
否     5.11%
Name: Pandas 能滿足您的需求嗎, dtype: object

不少人,甚至 pandas 維護(hù)人員都覺得 pandas API 的規(guī)模太大了雾叭。為了量化這個(gè)問題悟耘,我們還向用戶提出了關(guān)于 pandas API 規(guī)模的問題,看看大家覺得是太大织狐,還是太小作煌,還是剛剛好。

renamer = {"pandas 接口太大了(難找到要用的方法或難記)還是太小了(需要提供更多功能)": "pandas 接口太大嗎赚瘦?"}
sns.countplot(y="pandas 接口太大嗎?",
              data=df.rename(columns=renamer),
              color='k').set(title="pandas 接口太大嗎奏寨?",
                             ylabel="")
sns.despine();

最后起意,我們還提出了滿意度的問題,從 1 (非常不滿意)至 5 (非常滿意)病瞳。

sns.countplot(y='Pandas 滿意度',
              data=df[['Pandas 滿意度']].dropna().astype(int),
              color='k').set(title="Pandas 滿意度",
                             ylabel="")
sns.despine();

大多數(shù)人都對 pandas 非常滿意揽咕。滿意度的平均分為 4.39。我們希望以后能跟蹤這一數(shù)據(jù)的變化套菜。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末亲善,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子逗柴,更是在濱河造成了極大的恐慌蛹头,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件戏溺,死亡現(xiàn)場離奇詭異渣蜗,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)旷祸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門耕拷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人托享,你說我怎么就攤上這事骚烧。” “怎么了闰围?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵赃绊,是天一觀的道長。 經(jīng)常有香客問我辫诅,道長凭戴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任炕矮,我火速辦了婚禮么夫,結(jié)果婚禮上者冤,老公的妹妹穿的比我還像新娘。我一直安慰自己档痪,他們只是感情好涉枫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著腐螟,像睡著了一般愿汰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上乐纸,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天衬廷,我揣著相機(jī)與錄音,去河邊找鬼汽绢。 笑死吗跋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的宁昭。 我是一名探鬼主播跌宛,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼积仗!你這毒婦竟也來了疆拘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤寂曹,失蹤者是張志新(化名)和其女友劉穎哎迄,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體隆圆,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡芬失,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了匾灶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棱烂。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖阶女,靈堂內(nèi)的尸體忽然破棺而出颊糜,到底是詐尸還是另有隱情,我是刑警寧澤秃踩,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布衬鱼,位于F島的核電站,受9級特大地震影響憔杨,放射性物質(zhì)發(fā)生泄漏鸟赫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抛蚤。 院中可真熱鬧台谢,春花似錦、人聲如沸岁经。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缀壤。三九已至樊拓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間塘慕,已是汗流浹背筋夏。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留图呢,地道東北人叁丧。 一個(gè)月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像岳瞭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子蚊锹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容

  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個(gè) Awesome - XXX 系列...
    小邁克閱讀 2,986評論 1 3
  • 文/南城念北安 01 午飯過后 牡昆,閑來無事姚炕,我便拿起手機(jī)解悶。突然被手機(jī)屏幕上方一條推送吸引住了目光丢烘,"成長對于你...
    一個(gè)驚鴻閱讀 2,487評論 8 20
  • 在長達(dá)近一個(gè)月的時(shí)間里播瞳,我終于把白鹿原讀完了掸刊。在此,我想談?wù)勌镄?娥赢乓。 這個(gè)人物在白鹿原里給讀者帶去了一種色彩十分...
    劉冠紅閱讀 523評論 3 1
  • 寫日志已經(jīng)不流行很多年了忧侧。 一篇文章,不是用來發(fā)泄的牌芋,而是用來表達(dá)的蚓炬。同樣,一個(gè)人的生活躺屁,不是用來放逐的肯夏,而是用來...
    tommyli333閱讀 305評論 0 0