python學習筆記之資料的分析(二)

2021-10-24 07:20:33 字數 4577 閱讀 4956

疫情資料分析

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 ...