Skip to content

Instantly share code, notes, and snippets.

@mkczarkowski
Created February 6, 2023 13:19
Show Gist options
  • Select an option

  • Save mkczarkowski/9991c0118efa9c865e33213d5de2e639 to your computer and use it in GitHub Desktop.

Select an option

Save mkczarkowski/9991c0118efa9c865e33213d5de2e639 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
import gspread
from collections import Counter
import helpers
from importlib import reload
reload (helpers)
SHEET_ID = "1kFU8Lxy0qtFyi-Nc7DW8UV9gQbDq-bwhAe6X1notkg0"
SHEET_NAME = "nauka"
gc = gspread.service_account("credentials.json")
spreadsheet = gc.open_by_key(SHEET_ID)
worksheet = spreadsheet.worksheet(SHEET_NAME)
rows = worksheet.get_all_records()
popularity = {
"level": list(),
}
line_count = 0
for row in rows:
row_values = list(row.values())
if line_count == 0:
line_count += 1
else:
for idx, cell in enumerate(row_values):
split = cell.split(",")
split = list(map(helpers.trim_answer, split))
if split[0] == '':
continue
if idx == 6:
popularity["level"] += split
line_count += 1
countsLevel = Counter(popularity["level"])
countsRegular = helpers.group_by_level(countsLevel, "Regular", ["Regular Developer (3-5 lata<br>dosw. komercyjnego)", "Senior (5+ lat dosw.<br>komercyjnego)"]);
countsJunior = helpers.group_by_level(countsLevel, "Junior", ["Junior Developer (1-2 lata<br>dosw. komercyjnego)", "Regular Developer (3-5 lata<br>dosw. komercyjnego)", "Senior (5+ lat dosw.<br>komercyjnego)"]);
import kaleido
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
helpers.generatePie(countsLevel.values(), list(countsLevel), "Poziom doswiadczenia. Probka widzow: " + str(line_count), "percent+label+value")
helpers.generatePie(countsRegular.values(), list(countsRegular), "Poziom doswiadczenia: Regular+ i Pre-Regular")
helpers.generatePie(countsJunior.values(), list(countsJunior), "Poziom doswiadczenia: Junior+ i Pre-Junior")
import textwrap
from unidecode import unidecode
import kaleido
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
def trim_answer(str):
return "<br>".join(textwrap.wrap(unidecode(str),width=30)).strip()
def group_by_level(data, level, levelList):
label = level + "+"
pre_label = "Pre-" + level
level = 0
pre_level = 0
for key, value in data.items():
if key in levelList:
level += value
else:
pre_level += value
return {label: level, pre_label: pre_level}
def generatePie(values, names, title="", textinfo="percent+label"):
dfPie = pd.DataFrame(dict(values=values, names=names))
fig = px.pie(dfPie, values="values", names="names", title=title)
fig.update_traces(textposition="inside", textinfo=textinfo)
fig.show(renderer="svg", width=800, height=800)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment