数据分析 学习小结记录
------------Mysql獲取數據------------
# pymysql.cursors.DictCursor返回的數據集是包含數據表字段名的字典{};
# [{'area': '上\u3000海'),.......]
【項目一】折線圖、餅圖
------------Pandas處理數據------------
df_history_count = DataFrame(history_count) df_age_count = DataFrame(age_count)# 打印數據為,DataFrame是一個表格型的數據結構,DataFrame即有行索引也有列索引 #? ?area ? ? ?age0_14 age15_59 ?age60 ?age65 #0 ? 上 海 ? ?9.80 ? ?66.82 ?23.38 ?16.28 #1 ? 云 南 ? 19.57 ? ?65.52 ?14.91 ?10.75# 按年齡統計人口數量 df_age_count_group = df_age_count.drop('area', axis=1, inplace=False) ?# 去掉area列 df_age_count_group['age60_65'] = df_age_count_group['age60'] - df_age_count_group['age65'] ?# 求出60-65歲占比 df_age_count_group = df_age_count_group.mean() ?# 按列求平均 del df_age_count_group['age60']# 刪除列(方法1),增加列,求平均值,刪除列(方法2)
# 輸出 折線圖
df_history_count
# 輸出 餅圖
df_age_count_group
【項目二】 柱狀圖
# 2、統計各個發卡機構交易成功的筆數和金額并篩選出成功交易筆數排名前10的發卡機構 (3分鐘)
df_trade_infos = DataFrame(trade_infos) result = df_trade_infos.groupby('ISS_INS_ID_CD').agg({'TRANS_ST': 'count', 'TRANS_AT': 'sum'}) result = result.sort_values(['TRANS_ST'], ascending=False).head(10)# ISS_INS_ID_CD?? ?發卡機構
# TRANS_ST?? ?交易狀態,[TRANS_ST]=1 為交易成功
# TRANS_AT?? ?交易金額
# 輸出 柱狀圖
# 交易成功且筆數發卡機構和交易金額排名前10
? ? ? ? ? ? ? ? TRANS_ST ? ? TRANS_AT
ISS_INS_ID_CD ? ? ? ? ? ? ? ? ? ? ??
801020000 ? ? ? ? 45369 ?10567549022
801059999 ? ? ? ? 24372 ? 4021232077
【項目四】 柱狀圖
# 2、統計出不同年齡、不同學歷金融借貸逾期概率 (3分鐘)df_bad_loan_infos = DataFrame(bad_loan_infos) total_num = len(df_bad_loan_infos)# 過濾逾期信息 overtime_df = df_bad_loan_infos[df_bad_loan_infos['past_due_days'] > 0]# 按年齡打標簽 overtime_df.loc[(overtime_df.age >= 18) & (overtime_df.age <= 25), 'AgeGroup'] = '18-25' overtime_df.loc[(overtime_df.age >= 26) & (overtime_df.age <= 30), 'AgeGroup'] = '26-30' overtime_df.loc[(overtime_df.age >= 31) & (overtime_df.age <= 40), 'AgeGroup'] = '31-40' overtime_df.loc[(overtime_df.age >= 41), 'AgeGroup'] = '41+'# 按年齡分組統計 age = overtime_df[['AgeGroup', 'loan_id']].groupby('AgeGroup').agg('count')# 按年齡計算逾期概率 ratio_18_25 = round(age.at['18-25', 'loan_id'] / total_num * 100.0, 2) ratio_26_30 = round(age.at['26-30', 'loan_id'] / total_num * 100.0, 2) ratio_31_40 = round(age.at['31-40', 'loan_id'] / total_num * 100.0, 2) ratio_41 = round(age.at['41+', 'loan_id'] / total_num * 100.0, 2)# 輸出 柱狀圖
# 數據篩選 data[data["past_due_days"]>0]
# 打標簽 data.loc[(data.age >=18) & data.age <= 25,"AgeGroup"] = "18-25"
# 分組統計 data[["AgeGroup","loan_id"]].groupby("AgeGroup").agg("count")
# 分組計算比例 round(age)
【項目五】 K線圖
# 讀題目,理解題目
【項目七】 柱狀圖
# 2、整理房價走勢數據,計算出房價增長率,按房價增長率降序排列(3分鐘)
df_house = DataFrame(house_prices) df_house['wave_range'] = pd.to_numeric((df_house['end_price'] - df_house['start_price']) / df_house['start_price'] * decimal.Decimal(100.0), errors='coerce') df_house = df_house.sort_values(by=['wave_range'], ascending=[False]) df_house = df_house.round({'wave_range': 2})print("[任務2:熱門城市房價漲跌幅]") print(df_house[['city', 'wave_range']], "\n\n")# start_price 凈值日期
# end_price 累計凈值
# to_numeric 到數字,round(num,2)
# decimal.Decimal 十進制 十進制
# coerce 強迫,迫使
# sort_values 排序
總結
以上是生活随笔為你收集整理的数据分析 学习小结记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从QQ音乐开发,探讨如何利用腾讯云SDK
- 下一篇: c语言学习周报(2020.11.21-1