通往資料分析師刷題網-AnalystBuilder

通往資料分析師刷題網-AnalystBuilder

通往資料分析師刷題網-AnalystBuilder

推薦一下,即使是免費的也有26道題目可以做,而且題目也蠻有趣。

只要一個月付$34鎂就可以享有全部的題目以及課程(包含python, tableau, SQL, excel…),跟Leetcode一樣,還沒使用過的人一律先推薦訂閱一個月,能夠堅持再買一年。

只有做過免費題目,分享常用到的dataframe 功能

格式轉換:

pd.to_datetime(customers['birth_date']).dt.year# pd.to_datetime 把可以把columns內的值轉換成datetime格式# df.year 則是直接輸出抓取到的年份linkedin_posts['popularity'].round(4)# 指定float顯示到小數點後幾位,0表示整數表示

更改columns name

data = data.rename(columns={'date_x':'formatted_date'})# 上面的意思是找column name是date_x,改成formatted_datedata.columns = [x.upper() for x in data.columns]# 直接給定一樣長度的list,可以直接更改columns name# 上面的意思是,直接把column 全部轉換為大寫並指派到原本的cloumn name

搜尋或條件式

direct_reports[direct_reports['position'].str.contains('Manager')]# .str 轉換成string# .contains('Manager') 在string 中搜尋是否包含字眼Manager,有的話會回傳Trueproducts.loc[(products['size_change'] < 0) & (products['price_change'] >= 0), 'shrinkflation_flag'] = 'True'# (products['size_change'] < 0) & (products['price_change'] >= 0) 一樣為條件式# 值得注意這邊使用.loc[x,y], # x是你的row,使用條件式之後會回傳一個True/False 的pd.Series,用來定位row# y是column,表示要更動的column# 上方Script解釋為符合條件式的,把column shrinkflation_flag 指定為'True'

Grouping

direct_reports[['managers_id','employee_id']].groupby(by='managers_id').count()# 上方的解讀是,選取'managers_id','employee_id'之後# 以managers_id去聚合,後面可以接count,表示 這個managers_id中有多少個employee_iddirect_reports[['managers_id','employee_count']].groupby(by='managers_id').sum()# 如果我們假設employee_count是數字# 可以接去計算這個managers_id底下總共有多少員工

Sorting, merge

pd.merge(managers, direct_reports, on='managers_id', how='inner')# 透過關鍵字managers_id把左右兩個dataframe合在一起,# how 表達的是如何merge,有inner(交集), left(左邊為主), right(右邊為主),outer則比較少用customers[['customer_id']].sort_values(by='customer_id')# 解讀是,依據customer_id去排序

Apply 套公式

def salary_raise(x): increase_ratio = {1:1.1, 2:1.15, 3:3} return increase_ratio[x['pay_level']]*x['salary']employees['new_salary'] = employees.apply(lambda x: salary_raise(x), axis=1)# 有時候新增的column規則較多時,可以專門寫一個function去計算def adding(x): n = x['amount_sold_x']-x['amount_sold_y'] if n>0: return pd.Series([n, 'Cake']) else: return pd.Series([abs(n), 'Pie'])amount[['difference','sold_more']] = amount.apply(lambda x: adding(x), axis=1)# 萬一輸出需要一次性增加多個column,可以透過回傳pd.Series(list)去讓dataframe得到資料

Comments

Loading comments…

Leave a Comment