欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

python利用panda實(shí)現(xiàn)列聯(lián)表的案例-創(chuàng)新互聯(lián)

這篇文章主要介紹了python利用panda實(shí)現(xiàn)列聯(lián)表的案例,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比寬城網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式寬城網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋寬城地區(qū)。費(fèi)用合理售后完善,十年實(shí)體公司更值得信賴。

交叉表(cross-tabulation,簡稱crosstab)是?種?于計(jì)算分組頻率的特殊透視表。

語法詳解:

pd.crosstab(index, # 分組依據(jù)
   columns, # 列
   values=None, # 聚合計(jì)算的值
   rownames=None, # 列名稱
   colnames=None, # 行名稱
   aggfunc=None, # 聚合函數(shù)
   margins=False, # 總計(jì)行/列
   dropna=True, # 是否刪除缺失值
   normalize=False # 
   )

1 crosstab() 實(shí)例1

1.1 讀取數(shù)據(jù)

import os
import numpy as np
import pandas as pd

file_name = os.path.join(path, 'Excel_test.xls')
df = pd.read_excel(io=file_name, # 工作簿路徑
     sheetname='透視表', # 工作表名稱
     skiprows=1, # 要忽略的行數(shù)
     parse_cols='A:D' # 讀入的列
     )
df

python利用panda實(shí)現(xiàn)列聯(lián)表的案例

1.2 pd.crosstab() 默認(rèn)生成以行和列分類的頻數(shù)表

pd.crosstab(df['客戶名稱'], df['產(chǎn)品類別'])

python利用panda實(shí)現(xiàn)列聯(lián)表的案例

1.3 設(shè)置跟多參數(shù)實(shí)現(xiàn)分類匯總

pd.crosstab(index=df['客戶名稱'],
   columns=df['產(chǎn)品類別'],
   values=df['銷量'],
   aggfunc='sum',
   margins=True
   ).round(0).fillna(0).astype('int')

python利用panda實(shí)現(xiàn)列聯(lián)表的案例

注:因?yàn)榻徊姹硎就敢暠淼奶乩?,所以交叉表可以用透視表的函?shù)實(shí)現(xiàn)。又因?yàn)橥敢暠砜梢杂酶?python 的方式 groupby-apply 實(shí)現(xiàn),所以,交叉表完全可以用 groupby-apply 的方式實(shí)現(xiàn)。

2 用分類匯總的方法實(shí)現(xiàn) 交叉表

df.groupby(['客戶名稱', '產(chǎn)品類別']).apply(sum)

python利用panda實(shí)現(xiàn)列聯(lián)表的案例

2.1 分類匯總、重新索引、設(shè)置數(shù)值格式綜合應(yīng)用

c_tbl = df.groupby(['客戶名稱', '產(chǎn)品類別']).apply(sum)['銷量'].unstack()
c_tbl['總計(jì)'] = c_tbl.sum(axis=1) # 添加總計(jì)列
c_tbl.fillna(0).round(0).astype('int')

python利用panda實(shí)現(xiàn)列聯(lián)表的案例

軟件信息:

python利用panda實(shí)現(xiàn)列聯(lián)表的案例

補(bǔ)充:使用python(pandas)將數(shù)據(jù)處理成交叉分組表

交叉分組表是匯總兩種變量數(shù)據(jù)的方法, 在很多場景可以用到, 本文會(huì)介紹如何使用pandas將包含兩個(gè)變量的數(shù)據(jù)集處理成交叉分組表.

環(huán)境

pandas

python 2.7

原理

用坐標(biāo)軸來進(jìn)行比喻, 其中一個(gè)變量作為x軸, 另一個(gè)作為y軸, 如果定位到數(shù)據(jù)則累加一, 將所有數(shù)據(jù)遍歷一遍, 最后的坐標(biāo)軸就是一張交叉分組表(使用坐標(biāo)軸展示的數(shù)據(jù)一般是連續(xù)的, 交叉分組表的數(shù)據(jù)是離散的).

具體實(shí)現(xiàn)

示例數(shù)據(jù):

quality price
0  bad 18
1  bad 17
2  great  52
3  good  28
4  excellent  88
5  great  63
6  bad 8
7  good  22
8  good  68
9  excellent  98
10 great  53
11 bad 13
12 great  62
13 good  48
14 excellent  78
15 great  63
16 good  37
17 great  69
18 good  28
19 excellent  81
20 great  43
21 good  32
22 great  62
23 good  28
24 excellent  82
25 great  53

代碼:

  import pandas as pd
  from pandas import DataFrame, Series
  #生成數(shù)據(jù)
  df = DataFrame([['bad', 18], ['bad', 17], ['great', 52], ['good', 28], ['excellent', 88], ['great', 63]
        , ['bad', 8], ['good', 22], ['good', 68], ['excellent', 98], ['great', 53]
        , ['bad', 13], ['great', 62], ['good', 48], ['excellent', 78], ['great', 63]
        , ['good', 37], ['great', 69], ['good', 28], ['excellent', 81], ['great', 43]
        , ['good', 32], ['great', 62], ['good', 28], ['excellent', 82], ['great', 53]], columns = ['quality', 'price'])
#廣播使用的函數(shù)
def quality_cut(data):
  s = Series(pd.cut(data['price'], np.arange(0, 100, 10)))
  return pd.groupby(s, s).count()
#進(jìn)行分組處理
df.groupby(df['quality']).apply(quality_cut)

結(jié)果:

python利用panda實(shí)現(xiàn)列聯(lián)表的案例

交叉分組

詳細(xì)分析

從邏輯上來看, 為了達(dá)到對(duì)示例數(shù)據(jù)的交叉分組, 需要完成以下工作:

將數(shù)據(jù)以quality列進(jìn)行分組.

將每個(gè)分組的數(shù)據(jù)分別進(jìn)行cut, 以10為間隔.

將cut過的數(shù)據(jù), 以cut的范圍為列進(jìn)行分組

將所有數(shù)據(jù)組合到一起, row為quality, columns為cut的范圍

步驟1, pandasgroupby(...)接口, 會(huì)按照指定的列進(jìn)行分組處理, 每一個(gè)分組, 存儲(chǔ)相同類別的數(shù)據(jù)

<class 'pandas.core.frame.DataFrame'>
  quality price
0   bad   18
1   bad   17
6   bad   8
11   bad   13

而我們需要的, 只是price這列的數(shù)據(jù), 所以單獨(dú)將這列拿出來, 進(jìn)行cut, 最后得到我們要的series(步驟2, 步驟3)

  price
(0, 10]   1
(10, 20]  3
(20, 30]  0
(30, 40]  0
(40, 50]  0
(50, 60]  0
(60, 70]  0
(70, 80]  0
(80, 90]  0

使用pandas

apply()的廣播特性, 每一個(gè)分組的數(shù)據(jù)都會(huì)經(jīng)過上述幾個(gè)步驟的處理, 最后與第一次分組row進(jìn)行組合.

后記

估計(jì)能力有限, 這個(gè)問題想了很長時(shí)間, 沒想到pandas這么可以這么方便達(dá)成交叉分組的效果. 思考的時(shí)候主要是卡在數(shù)據(jù)組合上, 當(dāng)數(shù)據(jù)量很大時(shí)通過多個(gè)步驟進(jìn)行數(shù)據(jù)組合, 肯定是低效而且錯(cuò)誤的. 最后仔細(xì)研究了groupby, dataframe, series, dataframeIndex等數(shù)據(jù)模型, 使用廣播特性用幾句代碼就完成了. 證明了pandas的高性能, 也提醒自己遇見問題一定要耐心分析。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“python利用panda實(shí)現(xiàn)列聯(lián)表的案例”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

新聞名稱:python利用panda實(shí)現(xiàn)列聯(lián)表的案例-創(chuàng)新互聯(lián)
分享地址:http://aaarwkj.com/article24/peeje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、外貿(mào)網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)動(dòng)態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
91久久精品国产一区| 人妻巨乳一区二区三区| 国产精品国产三级国产专播精品| 精品久久久久久久久极品| 日本一区二区三区精彩视频| 国产91白丝在线观看| 肥臀大屁股av在线播放| 成人免费视频一区二区三区| 一本色道久久亚洲综合精品蜜桃 | 中文字幕一区日韩欧美| 精品国产50部农村老熟女av| 亚洲成人日韩国产欧美| 国产免费不卡午夜福利在线 | 亚洲av乱码毛片在线播放| 十八禁无遮挡污污污网站| 伊人激情一区二区三区| 亚洲限制级电影一区二区| 丰满人妻毛片一区二区三区| 欧美亚洲成人免费电影| 欧美日韩亚洲中文二区| 欧美一区二区三区精美| 91欧美一区二区在线视频| 国产精品三级高清在线| 成人午夜激情在线观看| 九九久久精品久久久精品| 精品人妻av中文字幕| 欧美日韩精品一区二区视频永久免| 日韩精品中文字幕电影| 国产日韩久久免费电影| 日韩精品高清不卡一区二区三区| 国产精品1区2区久久久 | 亚洲综合国产一区二区| 欧美日韩一级一区二区三区| 五月婷婷六月丁香伊人网| 亚洲精品国产熟女高潮| 亚洲乱码国产乱码精品| 人妻在线中文字幕一区| av熟女一区二区三区| 美女一区二区三区日本美女在线观看| 九九国产精品免费视频| 精品妇女一区二区三区|