Analiza sondajului din octombrie 2021
19 Oct 2021 | Nicolae GodinaCu puțin timp în urmă, am făcut un mic referendum în grupul de telegram. A fost un sondaj voluntar și persoanele au dispus de timp, au răspuns la câteva întrebări pentru a identifica interesele comunității. Pentru analiza datelor am decis să folosesc Python, cu toate că nu am abilități excepționale în Data Analysis, dar aș dori să mă împart cu rezultatele obținute.
Avem următoarele date de intrare, care le-am curățit și am corectat greșelile de tapare în câmpul unde nu erau opțiuni de selecție:
data = [
('Web development', '3-5 ani', 'Django'), ('Web development', '3-5 ani', 'Django, DRF'),
('Web development', '5+ ani', 'FastAPI, Tornado, Django'), ('Web development', '<1 an', 'Django'),
('Web development', '5+ ani', 'Django, FastAPI, poetry, requests'), ('Machine learning', '3-5 ani', 'Pandas'),
('Web development', '1-3 ani', 'Django, DRF, FastAPI'), ('Data analysis', '1-3 ani', 'Aiogram, bs, peewee'),
('Web development', '<1 an', 'Django, DRF'), ('Web development', '5+ ani', 'Django'),
('Web development', '<1 an', 'Django'), ('Data analysis', '1-3 ani', 'Spark, Pandas'),
('Web development', '3-5 ani', 'FastAPI'), ('Web development', '1-3 ani', 'Flask'),
('Web development', '<1 an', 'Django, Flask'), ('Web development', '<1 an', 'Django, Kivi'),
('Machine learning', '5+ ani', 'Keras, Tensorflow, sklearn, pandas, matplot, numpy'),
('Software testing', '1-3 ani', 'pytest, requests, selenium, robot-framework'),
('Software testing', '5+ ani',
'requests, scapy, pytest, beautifulsoup, json, lxml, IP, pyyaml, logging, threading, re'),
('Web development', '3-5 ani', 'Flask'), ('Web development', '3-5 ani', 'Django'),
('Machine learning', '5+ ani', 'Flask, Django, sklearn, Tensorflow, keras'),
('Web development', '3-5 ani', 'Flask, Django, DRF, scrapy'),
('Machine learning', '5+ ani', ''), ('Web development', '1-3 ani', 'Django'),
('Parsing / Scrapping / Crawling', '5+ ani', 'pyautogui, telebot, selenium, nmap, opencv'),
('Web development', '<1 an', 'Django'), ('Web development', '<1 an', 'Django'),
('Web development', '1-3 ani', 'Flask'), ('Web development', '1-3 ani', 'Django, DRF'),
('Web development', '1-3 ani', 'Django, Flask'), ('Web development', '3-5 ani', 'Flask'),
('Web development', '1-3 ani', ''), ('Machine learning', '<1 an', 'Tensorflow'),
('Web development', '<1 an', 'Flask, asyncio, pydantic'),
('Web development', '3-5 ani', '')
]
În primul rând hai să vedem câți au completat, folosind len
count = len(data)
print(count)
36
Domenii
Pentru a afla în ce domenii membrii comunității aplică limbajul Python voi folosi un Pie chart din matplotlib
import collections
import matplotlib.pyplot as plt
counter = collections.Counter([d[0] for d in data])
plt.pie(counter.values(), labels=counter.keys(), autopct='%1.1f%%', startangle=210)
plt.axis('equal')
plt.title('În ce domeniu aplici limbajul Python?')
plt.tight_layout(pad=5)
plt.show()
Nu mă așteptam ca Web development-ul să fie atât de popular, mă gândeam că ponderea la Machine learning va fi mai mare
Experiența
Acum, să vedem ce experiența au persoanele care au participat în sondaj, e același script doar că folosim counter pentru coloana a doua
import collections
import matplotlib.pyplot as plt
counter = collections.Counter([d[1] for d in data])
plt.pie(counter.values(), labels=counter.keys(), autopct='%1.1f%%', startangle=90)
plt.axis('equal')
plt.title('Ce experiență ai pe Python?')
plt.tight_layout()
plt.show()
Observăm că în grup avem persoane cu diversa experiență, de la juniori la seniori
Instrumente
Și ultimul task, e puțin mai complicat, hai să vedem care sunt cele mai populare package-uri pentru fiecare domeniu
import collections
import matplotlib.pyplot as plt
# group data
result = {}
for row in data:
result.setdefault(row[0], []).extend(filter(lambda s: len(s) > 0, map(lambda s: s.strip(), row[2].split(','))))
# change size
plt.rcParams['figure.figsize'] = (5, 17)
fig, axs = plt.subplots(len(result.keys()))
ax = 0
for domain, packages in result.items():
counter = collections.Counter(packages)
grouped = OrderedDict(counter.most_common())
axs[ax].set_title(domain)
axs[ax].pie(grouped.values(), labels=grouped.keys(), autopct='%1.1f%%', startangle=40)
axs[ax].axis('equal')
ax += 1
fig.tight_layout(pad=5)
fig.show()
Din păcate nu atât de mulți au completat că se ocupă cu Testing sau Scrapping pentru a aduna mai multe păreri despre instrumentele care le folosesc, cum este la web development.
La moment am exersat doar cu Pie chart, dar analogic se poate realiza grafice cu Bar sau Line chart și cu matplotlib
îmi pare mai simplu decât aș face asta în Excel!
Dacă acest material a fost util te rugăm să faci un share pentru a contribui la dezvoltarea comunității de Python Developers