最近學習了python數據分析的一些基礎知識堡纬,有numpy,pandas,matplotlib等枢步,找了一個藥品數據分析的小項目練一下手。
數據分析的步驟一般可以分為6個:
1帕棉,明確分析的目的
2剿牺,數據準備
3辫呻,數據清洗
4宪萄,數據分析
5骆莹,數據可視化
6萨蚕,分析報告
數據分析的目的:
通過對朝陽區(qū)醫(yī)院的藥品銷售數據的分析靶草,了解朝陽醫(yī)院的患者的月均消費次數,月均消費金額岳遥、客單價以及消費趨勢奕翔、需求量前幾位的藥品等。
數據準備
數據是存在Excel中的浩蓉,可以使用pandas的Excel文件讀取函數將數據讀取到內存中派继,這里需要注意的是文件名和Excel中的sheet頁的名字宾袜。讀取完數據后可以對數據進行預覽和查看一些基本信息。
通過數據的基本信息可以看出來驾窟,總行數6578庆猫,但是社保卡號只有6576绅络,其他行只有6577行月培,說明存在缺失值,這些將在數據清洗中進行處理恩急。
數據清洗
數據清洗過程一般包括:選擇子集杉畜、列名重命名、缺失數據處理衷恭、數據類型轉換此叠、數據排序及異常值處理等。
(1)選擇子集
在我們獲取到的數據中随珠,可能數據量非常龐大灭袁,并不是每一列都有價值都需要分析,這時候就需要從整個數據中選取合適的子集進行分析窗看,這樣就可以提高效率茸歧。但是這個案例數據列較少,可以忽略這一步烤芦。
(2)列名重命名
在數據分析過程中举娩,有些列名和數據容易混淆或產生歧義,不利于數據分析构罗,這時候需要把列名換成容易理解的名稱,可以采用rename函數實現:
(3)缺失數據處理
通過查看基本信息可以推測“社敝遣#卡號”這列存在缺失值遂唧,如果不處理這些缺失值會干擾后面的數據分析結果。缺失數據常用的處理方式有:刪除缺失值吊奢,一般用于少量缺失值盖彭,對整體數據影響不大的情況;平均值填充页滚,對于數值型常用召边;算法填充等。在本次案例中缺失值商量很少裹驰,直接使用dropna函數刪除缺失數據隧熙。
(4)數據類型轉換
在導入數據時為了防止導入不進來,會強制所有數據都是object類型幻林,但實際數據分析過程中“銷售數量”贞盯,“應收金額”音念,“實收金額”,這些列需要浮點型(float)數據躏敢,“銷售時間”需要改成時間格式闷愤,因此需要對數據類型進行轉換,可以使用astype()函數件余。
(5)異常值處理
查看數據的描述統計信息:我們可以看到最小值出現了負數讥脐,原因是銷售數量的值為負數,需要將銷售數量小于0的數據剔除掉啼器。
數據分析及可視化
這里涉及到的數據可視化的部分并不多所以將數據分析和可視化結合起來攘烛,數據分析之前我們應該確定分析的指標。
(1)指標1:月均消費次數 ? 計算:月均消費次數 = 總消費次數 / 月份數
(2)指標2:月均消費金額 ? 計算:月均消費金額 = 總消費金額 / 月份數
(3)指標3:客單價? 計算:客單價 = 總消費金額 / 總消費次數
(4)指標4:消費趨勢
每天的消費金額分布情況:一橫軸為時間镀首,縱軸為實收金額畫散點圖坟漱。
結論:從散點圖可以看出,每天消費金額在500以下的占絕大多數更哄,個別天存在消費金額很大的情況芋齿。
月消費金額變化趨勢,將銷售時間按月聚合分組成翩,然后求出分組后的累計金額觅捆,畫出折線圖。
結論:1月麻敌,4月栅炒,5月,6月的消費金額變化不大术羔,基本持平赢赊,2月和3月金額較低,可能是受春節(jié)假期影響级历,部分外來居民回家了释移,7月份最低是因為數據不全造成的。
藥品銷售情況分析寥殖,對“商品名稱”和“銷售數量”這兩列數據進行聚合為Series形式玩讳,方便后面統計。
結論:對于銷售量排在前幾位的藥品嚼贡,醫(yī)院應該時刻關注熏纯,保證藥品不會短缺而影響患者。