python統計excel利用pandans的分組

2021-10-01 17:14:53 字數 4124 閱讀 7570

python統計excel利用pandans的分組,其中還用列表資料求差集

csv資料結構(有三個按照日期統計的csv)

需要統計出這三張csv按照areaid缺少的type和bdtype

其中type=[1,2,3,4] bdtype=[1,3,4]

原始碼如下:

第一步資料初步處理刪除非必須列

# -*- coding: utf-8 -*-

import requests

import pandas as pd

import numpy as np

import re

"""資料讀取,初步處理刪除不要的列"""

cname =

['num'

,'area_id'

,'type'

,'bd_type'

,'date'

]dftfour = pd.read_csv(

"20191224.csv"

)dftthree = pd.read_csv(

"20191223.csv"

)dfttwo = pd.read_csv(

"20191222.csv"

)dftfour.columns = cname

dftthree.columns = cname

dfttwo.columns = cname

dftfour = dftfour.drop(

['num'

,'date'

], axis=1)

dftthree = dftthree.drop(

['num'

,'date'

], axis=1)

dfttwo = dfttwo.drop(

['num'

,'date'

], axis=

1)

第二步獲取三張csv的交集,按照』area_id』,『type』,『bd_type』
df1 = pd.merge(dftfour,dftthree,on=

['area_id'

,'type'

,'bd_type'

],how=

'inner'

)"""df2為兩次交集後的結果,需要知道area的名稱,對區域表的areaid再次獲取區域name"""

df2 = pd.merge(df1,dfttwo,on=

['area_id'

,'type'

,'bd_type'

],how=

'inner'

)dfareas = pd.read_csv(

"all_areas.csv"

)dfareas.columns =

['name'

,'area_id'

]"""結果dfs"""

dfs = pd.merge(df2,dfareas,on=

['area_id'

],how=

'inner'

)

對結果集分組獲取資料,三次分組統計
首次分組獲取areaid 再次分組type 最後分組bdtype

allres=

for filds, group in dfs.groupby(

'area_id'):

# print("area_id",group)

# print(group.area_id)

temptypelist=

temptype=

0for cfilds, cgroup in group.groupby(

'type'):

""" temptypelist 按區域統計type所有值,便於結果統計缺失的type

"""['type'])

['type'

].values[0]

)# temptype 按區域統計當前type

temptype = cgroup.drop_duplicates(

['type'])

['type'

].values[0]

#type

tempbdtypes=

for ccfilds, ccgroup in cgroup.groupby(

'bd_type'):

# tempbdtypes 按區域按type統計bd_type所有值

""" tempbdtypes 按區域按type統計bd_type所有值,便於結果統計缺失的bd_type

"""['bd_type'])

['bd_type'

].values[0]

)#bd_type列表

# print(temptypelist,temptype,tempbdtypes)

tempname = cgroup.drop_duplicates(

['name'])

['name'

].values[0]

#區域名稱

tempareaid = cgroup.drop_duplicates(

['area_id'])

['area_id'

].values[0]

# 區域名稱

# 指定檔案求交集得到連續三天都有的區域資料

li =

# 1、比較缺少的type

isletype =

list

(set

(chectype)

.difference(

set(temptypelist)))

# chectype中有而temptypelist中沒有的

iflen

(isletype)

>0:

print

("{}[{}]缺少的type:{}"

.format

(tempname,tempareaid,isletype)

) totype_1 = isletype

tobdtype_1 =

for v in totype_1:

for v2 in checbdtype:

# print(v,v2)

s =(v, v2)

print

(li)

# 2、比較缺少的bd_type

# print(temptype,tempbdtypes)

islebdtype =

list

(set

(checbdtype)

.difference(

set(tempbdtypes)))

iflen

(islebdtype)

>0:

totype_2 = temptype

tobdtype_2 = islebdtype

for v in tobdtype_2:

# print(totype_2,v)

s =(totype_2, v)

print

("{}[{}]的type{}缺少的bdtypes{}"

.format

(tempname,tempareaid,temptype,islebdtype)

) s=

[tempname,tempareaid,li,

len(li)

]"""將結果寫入csv"""

data = pd.dataframe(allres)

data.columns =

['name'

,'area_id'

,'all'

,'num'

]data.to_csv(

'allresless.csv'

)

allresless.csv結果如下:

利用Python處理Excel資料

資料清洗 資料預處理 資料提取 資料篩選 資料彙總 資料統計 import pandas as pd import numpy as np import matplotlib.pyplot as plt from datetime import datetime from pandas import...

利用Python處理Excel資料

目錄 資料清洗 資料預處理 資料提取 資料篩選 資料彙總 資料統計 import pandas as pd import numpy as np import matplotlib.pyplot as plt from datetime import datetime from pandas imp...

利用python讀取Excel檔案內容

今天,跟大家談一下用python計算excel中的資料 我們先學習讀取excel中的資料 首先我們要安裝xlrd庫,在命令提示符 快捷鍵win r 中輸入 pip install xlrd首先呢,當然要先有乙個excel啦,如下 我們先仔細觀察這個excel,裡面有2018 2017 2016的月收...