本文目錄一覽:
python簡單的函數定義和用法實例
python簡單的函數定義和用法實例
這篇文章主要介紹了python簡單的函數定義和用法,實例分析了Python自定義函數及其使用方法,具有一定參考借鑒價值,需要的朋友可以參考下
具體分析如下:
這裡定義了一個溫度轉換的函數及其用法。
def convertTemp(temp, scale):
if scale == “c”:
return (temp – 32.0) * (5.0/9.0)
elif scale == “f”:
return temp * 9.0/5.0 + 32
temp = int(input(“Enter a temperature: “))
scale = input(“Enter the scale to convert to: “)
converted = convertTemp(temp, scale)
print(“The converted temp is: ” + str(converted))
希望本文所述對大家的Python程序設計有所幫助。
Python數據分析案例-藥店銷售數據分析
最近學習了Python數據分析的一些基礎知識,就找了一個藥品數據分析的小項目來練一下手。
數據分析的目的:
本篇文章中,假設以朝陽醫院2018年銷售數據為例,目的是了解朝陽醫院在2018年里的銷售情況,通過對朝陽區醫院的藥品銷售數據的分析,了解朝陽醫院的患者的月均消費次數,月均消費金額、客單價以及消費趨勢、需求量前幾位的藥品等。
數據分析基本過程包括:獲取數據、數據清洗、構建模型、數據可視化以及消費趨勢分析。
數據準備
數據是存在Excel中的,可以使用pandas的Excel文件讀取函數將數據讀取到內存中,這裡需要注意的是文件名和Excel中的sheet頁的名字。讀取完數據後可以對數據進行預覽和查看一些基本信息。
獲取數據:朝陽醫院2018年銷售數據.xlsx(非真實數據) 提取碼: 6xm2
導入原始數據
數據準備
數據是存在Excel中的,可以使用pandas的Excel文件讀取函數將數據讀取到內存中,這裡需要注意的是文件名和Excel中的sheet頁的名字。讀取完數據後可以對數據進行預覽和查看一些基本信息。
獲取數據:朝陽醫院2018年銷售數據.xlsx(非真實數據) 提取碼: 6xm2
導入原始數據
數據清洗
數據清洗過程包括:選擇子集、列名重命名、缺失數據處理、數據類型轉換、數據排序及異常值處理
(1)選擇子集
在我們獲取到的數據中,可能數據量非常龐大,並不是每一列都有價值都需要分析,這時候就需要從整個數據中選取合適的子集進行分析,這樣能從數據中獲取最大價值。在本次案例中不需要選取子集,暫時可以忽略這一步。
(2)列重命名
在數據分析過程中,有些列名和數據容易混淆或產生歧義,不利於數據分析,這時候需要把列名換成容易理解的名稱,可以採用rename函數實現:
(3)缺失值處理
獲取的數據中很有可能存在缺失值,通過查看基本信息可以推測「購葯時間」和「社保卡號」這兩列存在缺失值,如果不處理這些缺失值會干擾後面的數據分析結果。
缺失數據常用的處理方式為刪除含有缺失數據的記錄或者利用演算法去補全缺失數據。
在本次案例中為求方便,直接使用dropna函數刪除缺失數據,具體如下:
(4)數據類型轉換
在導入數據時為了防止導入不進來,會強制所有數據都是object類型,但實際數據分析過程中「銷售數量」,「應收金額」,「實收金額」,這些列需要浮點型(float)數據,「銷售時間」需要改成時間格式,因此需要對數據類型進行轉換。
可以使用astype()函數轉為浮點型數據:
在「銷售時間」這一列數據中存在星期這樣的數據,但在數據分析過程中不需要用到,因此要把銷售時間列中日期和星期使用split函數進行分割,分割後的時間,返回的是Series數據類型:
此時時間是沒有按順序排列的,所以還是需要排序一下,排序之後索引會被打亂,所以也需要重置一下索引。
其中by:表示按哪一列進行排序,ascending=True表示升序排列,ascending=False表示降序排列
先查看數據的描述統計信息
通過描述統計信息可以看到,「銷售數量」、「應收金額」、「實收金額」這三列數據的最小值出現了負數,這明顯不符合常理,數據中存在異常值的干擾,因此要對數據進一步處理,以排除異常值的影響:
數據清洗完成後,需要利用數據構建模型(就是計算相應的業務指標),並用可視化的方式呈現結果。
月均消費次數 = 總消費次數 / 月份數(同一天內,同一個人所有消費算作一次消費)
月均消費金額 = 總消費金額 / 月份數
客單價 = 總消費金額 / 總消費次數
從結果可以看出,每天消費總額差異較大,除了個別天出現比較大筆的消費,大部分人消費情況維持在1000-2000元以內。
接下來,我銷售時間先聚合再按月分組進行分析:
結果顯示,7月消費金額最少,這是因為7月份的數據不完整,所以不具參考價值。
1月、4月、5月和6月的月消費金額差異不大.
2月和3月的消費金額迅速降低,這可能是2月和3月處於春節期間,大部分人都回家過年的原因。
d. 分析藥品銷售情況
對「商品名稱」和「銷售數量」這兩列數據進行聚合為Series形式,方便後面統計,並按降序排序:
截取銷售數量最多的前十種藥品,並用條形圖展示結果:
結論:對於銷售量排在前幾位的藥品,醫院應該時刻關注,保證藥品不會短缺而影響患者。得到銷售數量最多的前十種藥品的信息,這些信息也會有助於加強醫院對藥房的管理。
每天的消費金額分布情況:一橫軸為時間,縱軸為實收金額畫散點圖。
結論: 從散點圖可以看出,每天消費金額在500以下的占絕大多數,個別天存在消費金額很大的情況。
/article
Python類的用法實例淺析
Python類的用法實例淺析
這篇文章主要介紹了Python類的用法,以實例形式簡單分析了Python中類的定義、構造函數及使用技巧,需要的朋友可以參考下
本文實例講述了Python類的用法。分享給大家供大家參考。具體如下:
先看一段代碼:
#!/usr/bin/env python
class Test:
def __init__(self,msg=”hello”):
self.wel=msg
print “init”
def go(self,name,do):
print self.wel+”go! “+name+” “+do
d=Test(“hi,”)
d.go(“naughty”,”fight”)
上面的代碼演示了:
1、構造函數以及帶參數(參數有默認值)構造函數
2、構造類實例
3、使用類實例調用類方法
希望本文所述對大家的Python程序設計有所幫助。
python避免死鎖方法實例分析
python避免死鎖方法實例分析
本文實例講述了python避免死鎖方法。分享給大家供大家參考。具體分析如下:
當兩個或者更多的線程在等待資源的時候就會產生死鎖,兩個線程相互等待。
在本文實例中 thread1 等待thread2釋放block , thread2等待thtead1釋放ablock,
避免死鎖的原則:
1. 一定要以一個固定的順序來取得鎖,這個列子中,意味著首先要取得alock, 然後再去block
2. 一定要按照與取得鎖相反的順序釋放鎖,這裡,應該先釋放block,然後是alock
import threading ,time
a = 5
alock = threading.Lock()
b = 5
block = threading.Lock()
def thread1calc():
print “thread1 acquiring lock a”
alock.acquire()
time.sleep(5)
print “thread1 acquiring lock b”
block.acquire()
a+=5
b+=5
print “thread1 releasing both locks”
block.release()
alock.release()
def thread2calc():
print “thread2 acquiring lock b”
block.acquire()
time.sleep(5)
print “thread2 acquiring lock a”
alock.acquire()
time.sleep(5)
a+=10
b+=10
print “thread2 releasing both locks”
block.release()
alock.release()
t = threading.Thread(target = thread1calc)
t.setDaemon(1)
t.start()
t = threading.Thread(target = thread2calc)
t.setDaemon(2)
t.start()
while 1:
time.sleep(300)
輸出:
thread1 acquiring lock a
thread2 acquiring lock b
thread1 acquiring lock b
thread2 acquiring lock a
希望本文所述對大家的Python程序設計有所幫助。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/279452.html