疫情資料分析
1.匯入外部資料
pd.read_csv('檔名')
檢視資料屬性:
columns 列名
index 行索引
shape m行n列
dtyps 各列的型別
2.查詢資料
方法1:用列名直接查詢
df[[列名列表]]
方法2:用loc查詢
df.loc[行取值,列取值]
注意:行取值可以用邏輯值來進行對映,邏輯真(true)會返回,邏輯假(false)會去掉
df.head(n) #返回前n行,預設為5行
df.tail(n) #返回後n行,預設為5行
3.1> 設定表索引
方法1:df.reset_index(drop=true)
設定行索引為(0-n)
方法2:df.set_index(列名)
設定某一列為行索引
2> 找資料的最大或最小的n個值
方法1:df.msmallest(n,列名)
df.nlargest(n,列名)
方法2:排序
df.sort_values(列名,ascending=false/true) #false降序
df.sort_index()
3> 簡單的統計函式
df.函式名()
sum() max() min() median() std()
df.describe() #描述性統計 (一次可以統計出多個結果)
4> 處理與時間有關的資料
pd.to_datetime(時間列名) #將字元格式的時間資料,轉換為日期時間格式
補充知識的:查詢資料
df.iloc[行位置,列位置] #iloc中只能是數字,不能是列名等文字
df.loc[行索引,列索引] #loc中必須是索引。
5> 提取時間中的年,月,日,星期
year,month,day,weekday
#功能2--資料分析**
import pandas as pd
pd.set_option(
'display.unicode.ambiguous_as_wide'
,true
) pd.set_option(
'display.unicode.east_asian_width'
,true
)# 函式1--開啟檔案
defopen_def
(file_name)
: file_name1 =
open
(file_name,encoding=
'utf-8'
)#用open命令按照utf-8格式開啟
file_v1 = pd.read_csv(file_name1)
#然後用pandas的命令讀檔案
file_v2 = file_v1.drop(
'unnamed: 0'
,axis=1)
#刪除列,
#檢視屬性
# print("檢視屬性如下:".center(30,"="))
# print("列名有:\n",file_v2.columns)
# print('\n行索引是:\n',file_v2.index)
# print('\n形狀是:\n',file_v2.shape)
# print('\n各列的型別是:\n',file_v2.dtypes)
return file_v2
# 函式2--查詢資料
deffind_def
(file_v1,col_name,k)
: find_v1 = file_v1.loc[
:,col_name]
.head(k)
return find_v1
# 函式3--統計資料
defstat_def
(file_v1,b_v1,num_v1)
: result_v1 = file_v1.sort_values(
'當天確診'
,ascending=b_v1)
.head(
int(num_v1)
)return result_v1
#函式4 -- 分組聚合
defgroup_def
(file_v4,group_v1)
: file_v6 = file_v4.set_index(
"時間"
)#把時間作為索引
if group_v1 ==
"1":
file_v6.index = file_v6.index.month #提取時間中的日作為索引
elif group_v1 ==
"2":
file_v6.index = file_v6.index.day #提取時間中的日作為索引
elif group_v1 ==
"3":
file_v6.index = file_v6.index.weekday #提取時間中的日作為索引
else
:print
("您輸入的有誤"
)#分組聚合
result_v2 = file_v6.loc[:,
['當天疑似'
,'當天確診']]
.groupby(file_v6.index)
.agg(
['sum'
,'max'
,'min'])
return result_v2
#主函式
defmain()
: file_name =
"china_hist_data.csv"
file_v1 = open_def(file_name)
# return file_v1
sel_v1 =
input
('請輸入您的操作:1.查詢 2.統計資料 3.分組聚合'
)if sel_v1 ==
"1":
while
true
:print
("您可以選擇以下資料\n"
+"|"
.join(
list
(file_v1.columns)))
col_name =
input
("請輸入您要查詢的值(注意:多個值時,中間用空格分隔),輸入0時,結束查詢"
)if col_name ==
"0":
break
col_num =
input
("請輸入您要顯示的行數"
)try
: find_v1 = find_def(file_v1,col_name.split(
' ')
,int
(col_num)
)print
(find_v1)
except keyerror:
print
("沒有您要找的值"
)return find_v1
elif sel_v1 ==
"2":
sel_v2 =
input
("請輸入您的選擇1.較大的 2.較小的"
) num_v1 =
input
("請輸入要檢視的個數"
)if sel_v2 ==
"1":
result_v1 = stat_def(file_v1,
false
,num_v1)
elif sel_v2 ==
"2":
result_v1 = stat_def(file_v1,
true
,num_v1)
else
:print
("沒有您的需求"
)return result_v1
elif sel_v1 ==
"3":
sel_v2 =
input
("請輸入分組方法:1.月 2.日 3.星期"
)#將字串型別,轉換為日期時間型別
file_v1[
'時間'
]= pd.to_datetime(file_v1[
'時間'])
file_v4 = file_v1.iloc[:,
[1,5
,6,9
,10,11
,13]]
result_v2 = group_def(file_v4,sel_v2)
return result_v2
else
:print
("您輸入的有誤"
)#函式入口
if __name__ ==
"__main__"
: file_v1 = main(
)file_v1
Python學習筆記之資料型別
計算機簡而言之為進行計算的機器。計算機的所有功能的本質是計算功能,無論是網路資訊發布還是醫院的計費系統,其本質都是計算。而計算機語言則是人類與計算機互動的語言,人類通過計算機語言告訴計算機做什麼事情。python自然也不例外,它實際上就是人類與計算機溝通的語言或者說工具。然而,python天生又是為...
python學習筆記之資料型別
1 列表推導式 列表推導式可從乙個資料序列構建另乙個新的資料序列結構體 基本格式 variable out exp res for out exp in input list if out cond out exp res 列表生成元素表示式,可以是有返回值的函式。for out exp in in...
Python學習筆記之IF
關係表示式 邏輯表示式 and,or,not 單分支 num 0 if num 1 print num 大於 1 else print num 不大於1 雙分支 num 10 if num 1 print num 大於 10 elif num 10 print num 等於 10 elif num ...