日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Pandas數(shù)據(jù)處理:異常值、抽樣與聚合避坑指南

Pandas數(shù)據(jù)處理:異常值、抽樣與聚合避坑指南 Pandas 數(shù)據(jù)處理指南異常值、抽樣和數(shù)據(jù)聚合前陣子幫一個(gè)做電商數(shù)據(jù)的朋友看報(bào)表他拿一份兩百多萬(wàn)行的訂單明細(xì)跑groupby(channel).agg({amount:sum})出來(lái)的 GMV 跟業(yè)務(wù)方口徑差了將近三成。他一開(kāi)始懷疑是 SQL 導(dǎo)出口徑不一致翻來(lái)覆去對(duì)了兩天最后定位到三個(gè)問(wèn)題疊在一起幾條測(cè)試賬號(hào)的大額訂單沒(méi)剔掉一批amount為空的記錄被sum當(dāng) 0 算進(jìn)了分母還有一個(gè)渠道因?yàn)槌闃拥年P(guān)系樣本量只有幾十條卻被當(dāng)成正常渠道參與排名。這三個(gè)問(wèn)題分別對(duì)應(yīng)數(shù)據(jù)處理的三個(gè)基本功——異常值處理、抽樣、聚合恰好也是絕大多數(shù)人覺(jué)得自己會(huì)用、真到業(yè)務(wù)里卻頻繁翻車的三個(gè)地方。這篇內(nèi)容想聊的就是這三件事。它適合已經(jīng)能寫df.groupby()、df.sample()但經(jīng)常在結(jié)果對(duì)不上、口徑說(shuō)不清、跑得慢這幾件事上卡住的人。我會(huì)把每個(gè)環(huán)節(jié)里那些文檔上不寫、但實(shí)際項(xiàng)目里一定會(huì)遇到的東西講透包括檢測(cè)方法什么條件下會(huì)失效、抽樣參數(shù)背后代表什么、聚合結(jié)果怎么組織才能直接進(jìn)報(bào)表。文中用到的代碼都可以直接復(fù)制到 Notebook 里跑數(shù)據(jù)表結(jié)構(gòu)我盡量寫得通用換成你自己的字段名就能用。1. 異常值先分三類錯(cuò)誤值、極端值、結(jié)構(gòu)性偏移處理方式完全不同很多人對(duì)異常值的處理方式是跑個(gè) describe看到最大值離譜就刪掉這個(gè)做法在真實(shí)業(yè)務(wù)里十次有八次會(huì)出錯(cuò)。異常值不是一個(gè)統(tǒng)計(jì)學(xué)概念它是統(tǒng)計(jì)概念和業(yè)務(wù)語(yǔ)義的交叉點(diǎn)同樣一個(gè)數(shù)值在不同的字段上有完全不同的含義。我習(xí)慣先把它分成三類因?yàn)檫@三類的處置邏輯是互斥的。第一類是錯(cuò)誤值本質(zhì)是數(shù)據(jù)在采集、傳輸、錄入環(huán)節(jié)出了問(wèn)題。典型表現(xiàn)是單位錯(cuò)位金額字段里混進(jìn)了一條以分為單位的記錄、編碼錯(cuò)誤缺失被填成-1、9999、0而不是NaN、類型錯(cuò)位日期列里混進(jìn)了字符串。這類值不屬于偏大偏小它壓根就是錯(cuò)的處理方式應(yīng)該是修正或者置空而不是簡(jiǎn)單刪除。第二類是極端值數(shù)據(jù)本身是對(duì)的只是落在分布尾部。比如某個(gè)大客戶單筆下了五十萬(wàn)的訂單這個(gè)值真實(shí)發(fā)生了刪掉它等于把真實(shí)業(yè)務(wù)抹掉。這類值要考慮的是它對(duì)我要算的指標(biāo)有沒(méi)有影響——算平均值它影響巨大算中位數(shù)幾乎沒(méi)影響。第三類是結(jié)構(gòu)性偏移指的不是單條記錄異常而是某個(gè)分組的整體分布和其他分組不在一個(gè)量級(jí)上。比如某個(gè)渠道的客單價(jià)整體是其他渠道的十倍這往往不是渠道用戶質(zhì)量高而是這個(gè)渠道的金額字段包含了運(yùn)費(fèi)或者稅費(fèi)采集口徑跟別人不一樣。這類問(wèn)題用單變量檢測(cè)方法根本發(fā)現(xiàn)不了必須按分組切開(kāi)看。1.1 用 describe 和 value_counts 做第一輪體檢動(dòng)手之前先做體檢不要上來(lái)就寫過(guò)濾條件。我通常跑這么幾行import pandas as pd import numpy as np df.info() df.describe(includeall).T df[amount].value_counts().head(20) df[amount].value_counts().tail(20)describe看的是分布輪廓重點(diǎn)看三個(gè)數(shù)min是不是負(fù)數(shù)金額類字段出現(xiàn)負(fù)數(shù)通常意味著退款混進(jìn)來(lái)了、max是不是比75%分位大出好幾個(gè)數(shù)量級(jí)、mean和50%分位的差距有多大。均值遠(yuǎn)大于中位數(shù)說(shuō)明右偏嚴(yán)重后面選檢測(cè)方法時(shí)就不能用基于正態(tài)假設(shè)的那套。value_counts的頭部和尾部是在找哨兵值。所謂哨兵值就是用特定數(shù)字表示特殊含義的約定-1表示未填寫、0表示未知、9999表示不適用。這類值在統(tǒng)計(jì)上看起來(lái)可能不離譜-1甚至不大但它會(huì)嚴(yán)重污染均值。我遇到過(guò)age字段大量填0的情況算出來(lái)平均年齡 26 歲實(shí)際主力用戶是 35 歲以上就是被這批 0 拉下去的。這一步的經(jīng)驗(yàn)是先看value_counts的尾部再看describe。因?yàn)樯诒低谖膊砍霈F(xiàn)得很突然比如正常金額都是幾十到幾千尾部突然出現(xiàn)一個(gè)-999一眼就能看出來(lái)。而describe只會(huì)告訴你最小值是 -999不會(huì)告訴你這個(gè)值出現(xiàn)了 800 次。1.2 IQR 的上下界怎么算什么時(shí)候它會(huì)騙你IQR 法是箱線圖的數(shù)學(xué)基礎(chǔ)計(jì)算很直接q1 df[amount].quantile(0.25) q3 df[amount].quantile(0.75) iqr q3 - q1 lower q1 - 1.5 * iqr upper q3 1.5 * iqr mask_normal df[amount].between(lower, upper) print(f下界 {lower:.2f} 上界 {upper:.2f} 異常占比 {(~mask_normal).mean():.2%})1.5這個(gè)系數(shù)不是拍腦袋的在正態(tài)分布下它對(duì)應(yīng)的區(qū)間大約覆蓋 99.3% 的數(shù)據(jù)所以正常數(shù)據(jù)被判為異常的比例應(yīng)該在 1% 以內(nèi)。這個(gè)數(shù)字很重要——如果你用 IQR 算出來(lái)的異常比例是 15%那不是數(shù)據(jù)有問(wèn)題是方法用錯(cuò)了說(shuō)明數(shù)據(jù)分布嚴(yán)重偏離正態(tài)或者 Q1、Q3 本身就被污染了。IQR 最容易騙人的場(chǎng)景是右偏嚴(yán)重的數(shù)據(jù)比如訂單金額、用戶消費(fèi)額、頁(yè)面停留時(shí)長(zhǎng)。這類數(shù)據(jù) Q1 和 Q3 都擠在左側(cè)IQR 很小算出來(lái)的上界就會(huì)很低把大量正常的大額訂單判成異常。我實(shí)測(cè)過(guò)一份客單價(jià)數(shù)據(jù)Q1 是 38Q3 是 96上界算出來(lái)只有 183但實(shí)際上千的單子占了 8%這些全是真實(shí)的大客戶訂單。通用的補(bǔ)救辦法是先做對(duì)數(shù)變換再算 IQR或者直接用分位數(shù)縮尾比如把上下 1% 的值截?cái)嗟?1% 和 99% 分位的值上后者對(duì)業(yè)務(wù)解釋更友好因?yàn)樗桓淖償?shù)據(jù)的單調(diào)性lo, hi df[amount].quantile([0.01, 0.99]) df[amount_winsor] df[amount].clip(lowerlo, upperhi)1.3 刪除、縮尾、標(biāo)記、分箱四種處置各自適用什么場(chǎng)景檢測(cè)出來(lái)之后怎么處理這是最見(jiàn)功力的地方。我整理了一張對(duì)照表基本覆蓋了日常遇到的場(chǎng)景處置方式適用場(chǎng)景風(fēng)險(xiǎn)點(diǎn)直接刪除確認(rèn)為錯(cuò)誤值且占比低于 1%占比高時(shí)會(huì)造成樣本偏差縮尾clip極端值真實(shí)存在但要算均值類指標(biāo)會(huì)壓縮真實(shí)差異需在報(bào)告里注明打標(biāo)記不刪極端值本身是分析對(duì)象如大客戶識(shí)別下游所有計(jì)算都要帶上標(biāo)記過(guò)濾分箱處理用于建模特征或做分布對(duì)比分箱邊界選擇主觀性強(qiáng)單獨(dú)分組結(jié)構(gòu)性偏移如某渠道口徑不同需要額外解釋容易讓報(bào)表難讀刪除這條我想多說(shuō)一句。很多教程寫刪除 3σ 之外的記錄但從來(lái)沒(méi)說(shuō)刪完之后必須重新檢查分布。原因很簡(jiǎn)單刪掉尾部會(huì)改變均值、方差、分位數(shù)如果下游還有別的過(guò)濾條件兩次過(guò)濾疊加可能把某個(gè)分組刪空。我的習(xí)慣是刪除前后各跑一次groupby.size()確認(rèn)每個(gè)分組的剩余量都還夠做結(jié)論經(jīng)驗(yàn)閾值是單組不低于 30 條不夠就別刪改成標(biāo)記。還有一個(gè)更隱蔽的坑刪除操作會(huì)破壞索引連續(xù)性。如果后續(xù)用位置索引iloc或者把索引當(dāng)成 ID 用刪完就容易錯(cuò)位。所以刪除之后一律加.reset_index(dropTrue)或者干脆養(yǎng)成習(xí)慣任何過(guò)濾之后都重置一次。2. 檢測(cè)手段的選型從 MAD 到孤立森林每種方法的失效條件是什么搞清楚異常值的分類之后接下來(lái)的問(wèn)題是用什么方法找出來(lái)。這里有個(gè)很普遍的誤區(qū)方法越復(fù)雜越好。實(shí)際上孤立森林、LOF 這些算法在業(yè)務(wù)數(shù)據(jù)上的表現(xiàn)經(jīng)常不如一個(gè)老老實(shí)實(shí)的分位數(shù)閾值原因是它們對(duì)參數(shù)和數(shù)據(jù)尺度非常敏感而業(yè)務(wù)數(shù)據(jù)往往是臟的、混合分布的、量綱不統(tǒng)一的。我的選型邏輯是按數(shù)據(jù)形態(tài)走單變量近似對(duì)稱的用 Z-score單變量偏態(tài)的用 MAD多變量相關(guān)的用馬氏距離或孤立森林時(shí)間序列用滾動(dòng)統(tǒng)計(jì)量。下面逐個(gè)說(shuō)清楚它們的前提和失效邊界。2.1 Z-score 的前提是近似正態(tài)偏態(tài)數(shù)據(jù)上它會(huì)誤傷Z-score 就是標(biāo)準(zhǔn)分(x - mean) / std閾值一般取 3z (df[amount] - df[amount].mean()) / df[amount].std() outliers df[z.abs() 3]寫法簡(jiǎn)單到?jīng)]什么可說(shuō)問(wèn)題在于它的兩個(gè)隱含假設(shè)均值能代表中心標(biāo)準(zhǔn)差能代表離散程度。這兩個(gè)假設(shè)只有在分布近似對(duì)稱時(shí)才成立。右偏數(shù)據(jù)里尾部的大值會(huì)把均值往上拉同時(shí)把標(biāo)準(zhǔn)差撐大結(jié)果是真正的異常反而算不出高分。這個(gè)現(xiàn)象叫掩蔽效應(yīng)是 Z-score 在業(yè)務(wù)數(shù)據(jù)上最致命的問(wèn)題。還有一個(gè)技術(shù)細(xì)節(jié)容易被忽略std()默認(rèn)是樣本標(biāo)準(zhǔn)差ddof1如果跟別的系統(tǒng)比對(duì)結(jié)果時(shí)對(duì)方用的是總體標(biāo)準(zhǔn)差閾值會(huì)有一點(diǎn)差異。數(shù)據(jù)量大的時(shí)候影響可以忽略數(shù)據(jù)量小的時(shí)候比如幾百條值得注意。2.2 修正 Z-score 用中位數(shù)和 MAD抗噪但要注意 MAD 為 0修正 Z-score 把均值和標(biāo)準(zhǔn)差換成中位數(shù)和絕對(duì)中位差MAD這兩個(gè)統(tǒng)計(jì)量的崩潰點(diǎn)高得多少量極端值影響不了它們med df[amount].median() mad (df[amount] - med).abs().median() modified_z 0.6745 * (df[amount] - med) / mad outliers df[modified_z.abs() 3.5]0.6745這個(gè)常數(shù)是為了讓 MAD 在正態(tài)分布下和標(biāo)準(zhǔn)差可比等價(jià)于1 / 1.4826。閾值3.5是文獻(xiàn)里通用的經(jīng)驗(yàn)值對(duì)應(yīng)正態(tài)分布下大約 0.02% 的比例。這個(gè)方法有一個(gè)必須處理的邊界情況MAD 等于 0。當(dāng)超過(guò)一半的數(shù)據(jù)取值完全相同時(shí)就會(huì)發(fā)生典型場(chǎng)景是大量用戶的下單次數(shù)都是 1此時(shí)(x - med)對(duì)大多數(shù)記錄是 0MAD 就是 0除零之后全是inf或nan。處理方式是加一個(gè)極小值保護(hù)或者在這種場(chǎng)景下?lián)Q成基于計(jì)數(shù)的異常定義mad max(mad, 1e-9)我個(gè)人的經(jīng)驗(yàn)是對(duì)于次數(shù)型字段下單次數(shù)、登錄次數(shù)、點(diǎn)擊次數(shù)MAD 和 IQR 都不太好使因?yàn)榉植际请x散且高度集中的。這時(shí)候更靠譜的做法是直接用業(yè)務(wù)規(guī)則比如下單次數(shù)大于 50 次且 7 天內(nèi)完成這類組合條件。2.3 多變量異常馬氏距離和孤立森林的落地寫法單變量檢測(cè)看不到組合起來(lái)才異常的記錄。比如一個(gè)用戶年齡 25 歲、年消費(fèi) 80 萬(wàn)這兩個(gè)值單獨(dú)看都不算極端但放在一起就非??梢?。這類問(wèn)題需要多變量方法。馬氏距離考慮變量間的相關(guān)性要求數(shù)據(jù)近似多元正態(tài)而且樣本量要大于特征數(shù)否則協(xié)方差矩陣不可逆from scipy.spatial.distance import mahalanobis cols [age, amount, order_cnt] X df[cols].dropna().to_numpy() mu X.mean(axis0) cov_inv np.linalg.pinv(np.cov(X, rowvarFalse)) d np.array([mahalanobis(row, mu, cov_inv) for row in X]) threshold np.quantile(d, 0.99)注意這里用了pinv而不是inv因?yàn)樘卣髦g高度相關(guān)時(shí)協(xié)方差矩陣奇異inv會(huì)直接報(bào)錯(cuò)。另外mahalanobis是逐行調(diào)用的幾百萬(wàn)行會(huì)非常慢實(shí)際項(xiàng)目里建議用矩陣運(yùn)算重寫d np.sqrt(np.einsum(ij,jk,ik-i, X - mu, cov_inv, X - mu))。孤立森林不依賴分布假設(shè)思路是隨機(jī)切分空間異常點(diǎn)因?yàn)橄∈杷愿菀妆还铝⒊鰜?lái)路徑更短。落地寫法from sklearn.ensemble import IsolationForest model IsolationForest( n_estimators200, contamination0.01, max_samplesauto, random_state42, n_jobs-1, ) model.fit(df[cols].fillna(0)) df[if_flag] model.predict(df[cols].fillna(0)) # -1 為異常 df[if_score] model.score_samples(df[cols].fillna(0))contamination是最關(guān)鍵的參數(shù)它直接決定判定比例設(shè)成 0.01 就意味著一定有 1% 的記錄被判為異常不管數(shù)據(jù)里到底有沒(méi)有這么多。這是一個(gè)很強(qiáng)的先驗(yàn)假設(shè)所以我一般不用predict的硬標(biāo)簽而是用score_samples拿連續(xù)分?jǐn)?shù)再結(jié)合業(yè)務(wù)規(guī)則人工圈定閾值。這樣既能利用算法的排序能力又不會(huì)因?yàn)閰?shù)設(shè)置錯(cuò)誤而誤刪大量正常數(shù)據(jù)。2.4 時(shí)間序列上的異常滾動(dòng)統(tǒng)計(jì)量比全局閾值靠譜時(shí)間序列的異常判定不能用全局閾值因?yàn)闃I(yè)務(wù)本身有周期性和趨勢(shì)。春節(jié)期間的訂單量比平時(shí)高五倍那是正常的但某個(gè)工作日的訂單量突然掉了一半那才是異常。常用做法是滾動(dòng)中位數(shù)加滾動(dòng) MAD用局部統(tǒng)計(jì)量代替全局統(tǒng)計(jì)量df df.sort_values(dt).reset_index(dropTrue) roll_med df[amount].rolling(window7, min_periods3).median() roll_mad (df[amount] - roll_med).abs().rolling(window7, min_periods3).median() score 0.6745 * (df[amount] - roll_med) / roll_mad.replace(0, np.nan) df[ts_flag] score.abs() 3.5min_periods必須顯式設(shè)置否則前 6 行的結(jié)果全是NaN容易在后面被誤當(dāng)成正常值。窗口大小按業(yè)務(wù)周期定日數(shù)據(jù)用 7周數(shù)據(jù)用 4 到 8太小容易把正常波動(dòng)判成異常太大會(huì)讓異常點(diǎn)污染窗口內(nèi)的統(tǒng)計(jì)量導(dǎo)致檢測(cè)滯后。還有一個(gè)更實(shí)用的做法是同比環(huán)比結(jié)合即(今日 - 上周同日) / 上周同日超過(guò)某個(gè)比例就標(biāo)記。這個(gè)方法業(yè)務(wù)解釋性極強(qiáng)報(bào)表上可以直接展示較上周同日下降 62%比一堆統(tǒng)計(jì)量更容易讓人相信。3. sample 不只是隨機(jī)抽幾行抽樣參數(shù)、分層方案與代表性校驗(yàn)抽樣這件事在很多人心里就是數(shù)據(jù)太大跑不動(dòng)抽一萬(wàn)行先看看。但抽樣的目的是讓樣本能代表總體一旦這個(gè)前提不成立后面所有的分析結(jié)論都是廢的。我見(jiàn)過(guò)最典型的翻車是拿df.sample(1000)抽出來(lái)的樣本去評(píng)估轉(zhuǎn)化率抽出來(lái)的結(jié)果比全量高了兩個(gè)百分點(diǎn)查到最后是因?yàn)樵紨?shù)據(jù)按時(shí)間排序隨機(jī)抽樣恰好抽到了一個(gè)促銷時(shí)段。3.1 n、frac、weights、replace 的實(shí)際含義sample的參數(shù)不多但每個(gè)都有實(shí)際影響df.sample(n1000, random_state42) # 固定條數(shù) df.sample(frac0.1, random_state42) # 固定比例 df.sample(n1000, replaceTrue, random_state42) # 有放回 df.sample(n1000, weightsweight_col, random_state42) # 加權(quán)random_state在需要復(fù)現(xiàn)的場(chǎng)景必須固定尤其是做 A/B 對(duì)比分析時(shí)兩次抽樣用了不同的種子結(jié)果差異可能完全來(lái)自抽樣本身而不是業(yè)務(wù)變化。replaceTrue只在一種情況下需要樣本量要超過(guò)總體或者要做 Bootstrap 估計(jì)。日常抽樣基本不用因?yàn)橹貜?fù)樣本會(huì)讓統(tǒng)計(jì)量的方差被低估。weights是加權(quán)抽樣適合做重要性抽樣或者過(guò)采樣。有個(gè)坑值得說(shuō)weights可以傳列名也可以傳數(shù)組但如果傳入的 Series 索引和 DataFrame 索引不一致pandas 會(huì)按位置對(duì)齊而不是按索引結(jié)果可能完全錯(cuò)亂。穩(wěn)妥做法是直接傳.to_numpy()。frac和n不能同時(shí)指定這個(gè)大家都知道。但有個(gè)隱蔽問(wèn)題frac大于 1 且沒(méi)設(shè)replaceTrue時(shí)會(huì)報(bào)錯(cuò)而frac1返回的是打亂后的全量數(shù)據(jù)不是原始順序很多人在這一步誤以為數(shù)據(jù)被改了。3.2 分層抽樣手寫循環(huán)比 groupby.apply 更省心分層抽樣保證每個(gè)分組在樣本里的比例和總體一致這是報(bào)表抽樣幾乎必做的事。常見(jiàn)寫法有兩種我更推薦手寫循環(huán)def stratified_sample(df, col, n_per_groupNone, fracNone, seed42): parts [] for key, g in df.groupby(col, observedTrue, sortFalse): if n_per_group is not None: k min(n_per_group, len(g)) parts.append(g.sample(nk, random_stateseed)) else: parts.append(g.sample(fracfrac, random_stateseed)) return pd.concat(parts, ignore_indexTrue) sample_df stratified_sample(df, channel, frac0.05)為什么不用groupby.apply(lambda x: x.sample(...))兩個(gè)原因。一是新版 pandas 對(duì)返回結(jié)果形狀不一致的apply會(huì)有棄用警告行為在版本間有變化維護(hù)成本高。二是apply會(huì)把每個(gè)分組當(dāng)獨(dú)立函數(shù)調(diào)用幾萬(wàn)個(gè)分組的時(shí)候速度慢一個(gè)數(shù)量級(jí)。手寫循環(huán)雖然多幾行但行為完全可控出問(wèn)題好排查。min(n_per_group, len(g))這個(gè)保護(hù)必須加。小分組的數(shù)據(jù)量小于要求抽樣量時(shí)sample(nk)會(huì)直接拋ValueError整個(gè)流程中斷。用min兜底配合后面的一致性核對(duì)能馬上發(fā)現(xiàn)哪些分組樣本不足。observedTrue也不能省。如果你的分組字段是category類型默認(rèn)行為會(huì)把所有類別組合都列出來(lái)包括數(shù)據(jù)里根本不存在的組合白跑一堆空分組。新版 pandas 里這個(gè)默認(rèn)值已經(jīng)改了但如果代碼要兼容老版本顯式寫上更保險(xiǎn)。3.3 樣本量怎么估以及抽完必須做的一致性核對(duì)樣本量不是拍腦袋定的。判斷比例類指標(biāo)比如轉(zhuǎn)化率時(shí)用這個(gè)公式n z2 × p × (1-p) / e2z是置信水平對(duì)應(yīng)的分位數(shù)95% 對(duì)應(yīng) 1.96p是預(yù)期比例不知道就取 0.5此時(shí)方差最大e是允許誤差。取p0.5、e0.03算出來(lái) n 約等于 1067。如果總體本身不大還要做有限總體修正n_adj n / (1 (n - 1) / N)總體 5000 條時(shí)修正后的樣本量是 878比 1067 小了不少。這個(gè)修正很容易被忽略導(dǎo)致對(duì)小數(shù)據(jù)集做了不必要的過(guò)度抽樣。抽完之后必須做一致性核對(duì)這一步比抽樣本身更重要。我通常跑三件事分組占比對(duì)比、關(guān)鍵字段的分位數(shù)對(duì)比、空值率對(duì)比。total_ratio df[channel].value_counts(normalizeTrue) sample_ratio sample_df[channel].value_counts(normalizeTrue) compare pd.DataFrame({總體: total_ratio, 樣本: sample_ratio}) compare[偏差] (compare[樣本] - compare[總體]).round(4) print(compare.sort_values(偏差, keyabs, ascendingFalse))偏差超過(guò) 1 個(gè)百分點(diǎn)就要警惕。如果發(fā)現(xiàn)某個(gè)分組偏差明顯先檢查這個(gè)分組的總量是不是太小小于 100 條時(shí)抽樣波動(dòng)本身就大排除之后再考慮加大樣本量或者改成按權(quán)重抽樣。對(duì)連續(xù)型字段用quantile([0.1, 0.25, 0.5, 0.75, 0.9])對(duì)比總體和樣本兩列并排看。這一步能發(fā)現(xiàn)隨機(jī)抽樣抽偏了分布的情況比如整體樣本量夠了但高分位被系統(tǒng)性低估。3.4 分層抽樣的一個(gè)變體按業(yè)務(wù)重要性分配配額嚴(yán)格按比例分層有時(shí)候不實(shí)用。比如做渠道分析時(shí)主力渠道占 90% 的量長(zhǎng)尾渠道加起來(lái)只占 10% 但包含幾十個(gè)渠道按比例抽的話每個(gè)長(zhǎng)尾渠道只能分到幾條根本沒(méi)法單獨(dú)看。這時(shí)候用配額抽樣更合理主力渠道按比例抽長(zhǎng)尾渠道強(qiáng)制保底若干條。big stratified_sample(df[df[channel].isin([A, B])], channel, frac0.02) small stratified_sample(df[~df[channel].isin([A, B])], channel, n_per_group50) sample_df pd.concat([big, small], ignore_indexTrue)這樣做出來(lái)的樣本不能直接用來(lái)算整體均值因?yàn)樗?jīng)過(guò)了人為加權(quán)。但如果用途是看每個(gè)渠道的畫像那完全合理。關(guān)鍵在于樣本用途決定了抽樣方案而不是反過(guò)來(lái)。這一點(diǎn)我會(huì)在交付分析結(jié)果時(shí)明確寫出來(lái)避免下游拿著加權(quán)樣本去算全站 GMV。4. groupby 的執(zhí)行邏輯與 agg 寫法把聚合結(jié)果做成能直接進(jìn)報(bào)表的形狀聚合是三個(gè)環(huán)節(jié)里最常用的也是最容易產(chǎn)生結(jié)果對(duì)不上的環(huán)節(jié)。原因往往不在groupby本身而在于 NaN 的處理、索引的形狀、以及聚合函數(shù)的語(yǔ)義選擇——sum()對(duì)全 NaN 分組返回 0mean()對(duì)全 NaN 分組返回 NaN這兩個(gè)行為的差異能讓報(bào)表數(shù)字出現(xiàn)明顯偏差。4.1 groupby 到底做了什么為什么要關(guān)注 as_index 和 observedgroupby的執(zhí)行過(guò)程是拆分-應(yīng)用-合并按 key 把數(shù)據(jù)切成若干塊對(duì)每塊執(zhí)行聚合函數(shù)再把結(jié)果拼成新表。理解這一點(diǎn)很多行為的來(lái)源就清楚了。as_indexFalse決定了分組字段是留在索引上還是變成普通列。大多數(shù)接報(bào)表的場(chǎng)景都應(yīng)該設(shè)成False因?yàn)楹罄m(xù)要merge、要導(dǎo)出 Excel、要寫進(jìn)數(shù)據(jù)庫(kù)索引里的列很麻煩result df.groupby(channel, as_indexFalse).agg(gmv(amount, sum))dropna決定分組字段為 NaN 的記錄要不要參與。默認(rèn)是丟棄這在統(tǒng)計(jì)上合理但在業(yè)務(wù)上經(jīng)常出問(wèn)題——空的分組字段往往代表未歸類直接丟掉會(huì)讓總數(shù)對(duì)不上。我一般會(huì)先把空值填成未知再分組這樣總量是守恒的。observedTrue前面提過(guò)主要影響 categorical 類型。還有一個(gè)相關(guān)的坑如果分組字段的 dtype 是object但實(shí)際取值只有少數(shù)幾個(gè)可以先轉(zhuǎn)成category分組速度能快好幾倍內(nèi)存也能省一半以上。4.2 命名聚合比傳字典更清晰也更好接下游聚合的寫法有好幾種從差到好排下來(lái)# 寫法一多函數(shù)聚合結(jié)果是 MultiIndex 列 df.groupby(channel).agg({amount: [sum, mean, count]}) # 寫法二傳字典只能給一列配一個(gè)函數(shù)或函數(shù)列表 df.groupby(channel).agg({amount: sum, order_id: nunique}) # 寫法三命名聚合推薦 summary df.groupby(channel, as_indexFalse).agg( gmv(amount, sum), order_cnt(order_id, nunique), avg_price(amount, mean), p90(amount, lambda x: x.quantile(0.9)), )寫法一的問(wèn)題是多函數(shù)聚合出來(lái)是二級(jí)列名result[amount][sum]這種取法在導(dǎo)出、重命名、拼接時(shí)都很別扭得用flatten處理。寫法三直接給每個(gè)聚合結(jié)果命名列名是扁平的可以直接進(jìn)報(bào)表。用lambda算分位數(shù)很方便但性能很差——它是逐組調(diào)用 Python 函數(shù)幾萬(wàn)個(gè)分組時(shí)能慢十倍以上。數(shù)據(jù)量大時(shí)改用functools.partial或者先算分位數(shù)列再聚合from functools import partial q90 partial(pd.Series.quantile, q0.9) summary df.groupby(channel, as_indexFalse).agg(p90(amount, q90))另外還有一個(gè)語(yǔ)義陷阱count和size的區(qū)別。count統(tǒng)計(jì)非空值數(shù)量size統(tǒng)計(jì)行數(shù)含空值。做訂單數(shù)統(tǒng)計(jì)時(shí)如果用錯(cuò)空值多的分組會(huì)少算。nunique默認(rèn)不統(tǒng)計(jì)空值這個(gè)行為一般符合預(yù)期但如果需要把空值也算一種取值得顯式dropnaFalse。4.3 transform 和 apply 的分工以及性能差距transform的作用是按組計(jì)算但結(jié)果保持原表形狀用來(lái)做組內(nèi)標(biāo)準(zhǔn)化、組內(nèi)占比、缺失值組內(nèi)填充特別方便df[channel_avg] df.groupby(channel)[amount].transform(mean) df[amount_ratio] df[amount] / df[channel_avg] df[rank_in_channel] df.groupby(channel)[amount].rank(ascendingFalse, methoddense)如果不要求保留原形狀只是想拿到每組一個(gè)值那就用agg它比transform快因?yàn)椴恍枰呀Y(jié)果廣播回每一行。apply最靈活可以返回任意形狀但也是三者里最慢的。它的價(jià)值在于邏輯復(fù)雜、沒(méi)法用內(nèi)置函數(shù)表達(dá)的場(chǎng)景比如組內(nèi)要做時(shí)間序列插值、要做排序后取第 N 行top3 df.groupby(channel, group_keysFalse).apply( lambda g: g.nlargest(3, amount), include_groupsFalse )新版 pandas 里apply作用在 DataFrame 上時(shí)分組列默認(rèn)會(huì)包含在數(shù)據(jù)里需要在函數(shù)里排除否則會(huì)報(bào)錯(cuò)或者產(chǎn)生重復(fù)列。加include_groupsFalse是比較穩(wěn)妥的寫法老版本沒(méi)有這個(gè)參數(shù)需要用g.drop(columns...)手動(dòng)剔除。4.4 pivot_table 和 crosstab 的適用邊界pivot_table本質(zhì)上是groupby加透視適合做二維交叉表。跟groupby的區(qū)別在于它能一次把行維度、列維度都鋪開(kāi)適合直接給人看pivot pd.pivot_table( df, indexchannel, columnsmonth, valuesamount, aggfuncsum, fill_value0, marginsTrue, margins_name合計(jì) )fill_value0很重要否則交叉表里沒(méi)有數(shù)據(jù)的位置是NaN做后續(xù)計(jì)算時(shí)會(huì)傳播。marginsTrue會(huì)自動(dòng)加行列合計(jì)省去手工算總數(shù)的一步但要注意合計(jì)行在索引里叫All可以自定義跟數(shù)據(jù)行混在一起如果后面還要做運(yùn)算記得先剔除。crosstab適合算頻次分布比pivot_table寫起來(lái)簡(jiǎn)潔pd.crosstab(df[channel], df[status], normalizeindex, marginsFalse)normalizeindex按行歸一化輸出的就是每個(gè)渠道里各狀態(tài)的占比做轉(zhuǎn)化率分析很方便。normalizecolumns按列normalizeTrue按總數(shù)。這三個(gè)值容易搞混我的記法是歸一化的方向就是分母所在的方向。5. 三個(gè)環(huán)節(jié)串成一條流水線可復(fù)用函數(shù)與幾個(gè)高頻報(bào)錯(cuò)分開(kāi)看每個(gè)環(huán)節(jié)都不難真到項(xiàng)目里麻煩出在三者交織的地方。異常值處理改變了分布抽樣就要重新校驗(yàn)抽樣讓部分分組數(shù)據(jù)變少聚合時(shí)就要處理小樣本分組聚合結(jié)果又要回到異常值判斷里做交叉驗(yàn)證。把這些串起來(lái)我的做法是把每一步寫成獨(dú)立函數(shù)中間產(chǎn)物落盤方便回溯。5.1 函數(shù)拆分與參數(shù)設(shè)計(jì)整條流水線拆成四個(gè)函數(shù)每個(gè)函數(shù)只做一件事參數(shù)顯式傳入不依賴全局變量def profile(df, cols): 輸出字段體檢表空值率、唯一值數(shù)、分位數(shù)、疑似哨兵值 rows [] for c in cols: s df[c] rows.append({ col: c, dtype: str(s.dtype), null_rate: round(s.isna().mean(), 4), nunique: s.nunique(), min: s.min() if pd.api.types.is_numeric_dtype(s) else None, p01: s.quantile(0.01) if pd.api.types.is_numeric_dtype(s) else None, p50: s.quantile(0.5) if pd.api.types.is_numeric_dtype(s) else None, p99: s.quantile(0.99) if pd.api.types.is_numeric_dtype(s) else None, max: s.max() if pd.api.types.is_numeric_dtype(s) else None, }) return pd.DataFrame(rows) def flag_outliers(df, col, methodmad, k3.5): 只打標(biāo)記不刪數(shù)據(jù) s df[col] if method mad: med s.median() mad max((s - med).abs().median(), 1e-9) score 0.6745 * (s - med) / mad return (score.abs() k).fillna(False) if method iqr: q1, q3 s.quantile([0.25, 0.75]) iqr q3 - q1 return ~s.between(q1 - 1.5 * iqr, q3 1.5 * iqr) raise ValueError(funknown method: {method}) def build_sample(df, group_col, frac0.05, min_n30, seed42): 分層抽樣小分組保底 min_n 條 parts [] for key, g in df.groupby(group_col, observedTrue, sortFalse): k max(min_n, int(round(len(g) * frac))) parts.append(g.sample(nmin(k, len(g)), random_stateseed)) return pd.concat(parts, ignore_indexTrue) def build_summary(df, group_col, value_col, id_col): return df.groupby(group_col, as_indexFalse).agg( cnt(id_col, nunique), total(value_col, sum), avg(value_col, mean), p50(value_col, median), )這樣拆的好處是每一步都能單獨(dú)驗(yàn)證。profile的輸出可以直接貼進(jìn)分析報(bào)告當(dāng)數(shù)據(jù)質(zhì)量說(shuō)明flag_outliers加了_flag列而不刪數(shù)據(jù)出問(wèn)題隨時(shí)能切換策略重跑。5.2 SettingWithCopyWarning 的根因和三種消除方式這個(gè)警告幾乎人人都見(jiàn)過(guò)很多人直接warnings.filterwarnings(ignore)了事但它是真實(shí)問(wèn)題的信號(hào)。根因在于 pandas 無(wú)法確定你拿到的 DataFrame 是原始數(shù)據(jù)的視圖還是副本賦值操作可能改了原表也可能沒(méi)改行為不確定。最常見(jiàn)的觸發(fā)寫法是鏈?zhǔn)剿饕? 觸發(fā)警告 df[df[status] paid][discount] 0.9 # 正確寫法一先 copy sub df[df[status] paid].copy() sub[discount] 0.9 # 正確寫法二用 loc 一次定位 df.loc[df[status] paid, discount] 0.9寫法二最推薦一次完成定位和賦值不會(huì)產(chǎn)生中間對(duì)象。寫法的關(guān)鍵是copy()不能省很多人覺(jué)得加了copy()會(huì)多占內(nèi)存實(shí)際上 pandas 3.0 之后寫時(shí)復(fù)制是默認(rèn)行為copy()的開(kāi)銷比想象中小得多而且能避免一堆難以排查的問(wèn)題。還有一類更隱蔽的情況merge之后修改某一列時(shí)觸發(fā)這個(gè)警告。原因是merge結(jié)果的某些塊可能跟原始 DataFrame 共享內(nèi)存。處理方法一樣merge之后如果要做原地修改先.copy()。5.3 dtype 被悄悄改掉整數(shù)變浮點(diǎn)、空值被當(dāng)成 0這個(gè)坑比上一個(gè)大得多因?yàn)樗粓?bào)警告只給你一個(gè)錯(cuò)誤的數(shù)字。第一個(gè)典型場(chǎng)景原本是int64的列里出現(xiàn)空值pandas 會(huì)自動(dòng)把它轉(zhuǎn)成float64。看起來(lái)只是類型變了實(shí)際影響是id列變成浮點(diǎn)之后作為字典鍵或者跟字符串拼接會(huì)出現(xiàn)123.0這種結(jié)果去重、關(guān)聯(lián)、導(dǎo)出全都會(huì)出問(wèn)題。解法是用可空整型df[qty] df[qty].astype(Int64) # 注意大寫 IInt64大寫是 pandas 擴(kuò)展類型支持pd.NAint64小寫是 numpy 類型不支持。這個(gè)大小寫區(qū)別坑過(guò)很多人。同理還有string和object、boolean和bool。第二個(gè)場(chǎng)景sum()把 NaN 當(dāng) 0 加。這是sum的設(shè)計(jì)行為skipnaTrue是默認(rèn)值。影響在于分母——如果算客單價(jià)時(shí)用amount_sum / order_count而amount有一批是 NaN那分子少算、分母照算客單價(jià)就被系統(tǒng)性低估。正確做法是先把空值處理掉再算或者在聚合里顯式指定df.groupby(channel).agg( gmv(amount, lambda x: x.sum(min_count1)), # 全空時(shí)返回 NaN 而不是 0 cnt(order_id, nunique), )min_count1的意思是至少要有 1 個(gè)非空值才計(jì)算結(jié)果全空分組返回 NaN這樣在報(bào)表里一眼就能看出哪些分組數(shù)據(jù)缺失而不是被 0 悄悄糊過(guò)去。第三個(gè)場(chǎng)景groupby之后 dtype 發(fā)生變化。分類字段轉(zhuǎn)成索引之后類型可能變尤其是用了category的地方。做完聚合之后加一句print(result.dtypes)檢查一下養(yǎng)成習(xí)慣能省掉大量為什么數(shù)字不對(duì)的排查時(shí)間。5.4 內(nèi)存與速度category 和避免 apply 的實(shí)測(cè)差距數(shù)據(jù)量上到千萬(wàn)行之后性能就變成必須考慮的事。我做過(guò)一輪對(duì)比同一份 800 萬(wàn)行的訂單數(shù)據(jù)幾個(gè)改動(dòng)帶來(lái)的差異很明顯改動(dòng)大致效果說(shuō)明分組字段轉(zhuǎn)category分組耗時(shí)下降 40%–60%取值基數(shù)低時(shí)收益最大用agg命名聚合替代apply聚合耗時(shí)下降一個(gè)數(shù)量級(jí)apply是逐組 Python 調(diào)用數(shù)值列降精度f(wàn)loat32內(nèi)存占用減少約一半精度要求不高的場(chǎng)景可用讀數(shù)據(jù)時(shí)指定dtype和usecols讀取階段內(nèi)存減少 60% 以上從源頭控制最有效用pd.NA替代np.nan語(yǔ)義更清晰內(nèi)存略增整數(shù)列可空時(shí)必需category的收益來(lái)自兩點(diǎn)一是值實(shí)際只存一份每個(gè)位置存的是整數(shù)編碼內(nèi)存從每行一個(gè)字符串變成每行一個(gè)小整數(shù)二是分組時(shí)可以直接按整數(shù)編碼做哈希比字符串比較快得多。轉(zhuǎn)的時(shí)候要注意如果某列取值基數(shù)接近行數(shù)比如用戶 ID轉(zhuǎn)成 category 反而更慢更占內(nèi)存轉(zhuǎn)之前先看nunique() / len(df)這個(gè)比值低于 0.1 再考慮。讀取階段優(yōu)化是最劃算的因?yàn)槭〉氖侨鞒痰膬?nèi)存峰值dtype_map { order_id: string, channel: category, qty: Int32, amount: float32, } df pd.read_csv(orders.csv, usecolslist(dtype_map), dtypedtype_map)usecols只讀需要的列這一步經(jīng)常能省掉一半以上的內(nèi)存和時(shí)間。很多人的習(xí)慣是先全量讀進(jìn)來(lái)再刪列實(shí)際上源頭就過(guò)濾掉更高效。float32要注意精度金額類字段如果對(duì)小數(shù)位有嚴(yán)格要求比如到分用float32可能產(chǎn)生累積誤差建議保留float64或者干脆用整數(shù)存分。最后提一個(gè)容易被忽略的性能陷阱在groupby之后鏈?zhǔn)秸{(diào)用多次聚合不如一次agg里全寫完。每次鏈?zhǔn)秸{(diào)用都會(huì)重新觸發(fā)一次分組計(jì)算雖然 pandas 內(nèi)部有一些優(yōu)化但顯式一次寫完更穩(wěn)定。我在幾個(gè)項(xiàng)目里對(duì)比過(guò)把三次獨(dú)立的groupby().sum()、groupby().mean()、groupby().count()合并成一個(gè)agg耗時(shí)大約能降到三分之一。還有一個(gè)我個(gè)人的小習(xí)慣所有聚合結(jié)果在導(dǎo)出之前先跑一次總量守衡校驗(yàn)——用原始數(shù)據(jù)的amount.sum()和聚合結(jié)果的total.sum()對(duì)比兩者必須完全相等浮點(diǎn)用np.isclose。這一步能抓出絕大多數(shù)過(guò)濾條件寫錯(cuò)、空值被丟棄、分組字段意外為 NaN 的問(wèn)題。寫完一條流水線加上這個(gè)校驗(yàn)交付時(shí)心里就有底了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
天天操天天舔| 啊啊好多水| 青青草男人天堂| 久久超碰国产一区二区三区| 色av中文字| 94色色电影网| 99久久com免费视频′| 欧美手机在线综合| 91丨熟女丨丰满熟女| 九九九九免费高| 亚洲黄片免费在线播放| 看黑人AV不卡| 免费av高清无码| 亚洲精品久久久久久久久豆丁网| 亚洲男人天堂手机版| 色色香蕉| 国产精品动态一区二区三区四四| 女人爽到高潮久久久| 蜜臀中文字幕| 国产农村妇女精品一二区| 国产精品熟女一区二区三区| 九九热精品免费视频| 中文字幕后石码四区五区| www.99色| 国产精品无码久久久久2025| 欧洲亚洲综合| 亚洲高清视频在线观看| 日韩熟女乱伦中出| 欧美久久久| 国产呦精品一区二区三区下载| 亚洲,欧美,综合网| 麻豆精品A片免费观看| 3D污黄视频在线观看| 中文字幕精品三级久久久| 亚洲 一区二区 自拍| 另类欧美| 91熟女综合| 天天看天天在线精品| 强奸熟女一区二区三区| 亚洲一区二区麻豆影院| 久久超碰国产一区二区三区| 国产精品一区二区后入| 深爱激情五月天| 欧美色999| 久久久久无码一妻区| 天堂种子在线www网资源| 色97欧美| 区一二区日韩亚洲乱码av电影| 欧洲亚洲国产综合在线| 99最新日韩偷拍视频| 五月婷视频| 中文字幕丰满人妻日本| 999九九九九国产动| 婷婷丁香五月激情啪啪| 久久久com| av2014 日韩在线中文字幕| 旡码电影特区| 婷婷五月天综合网| av天堂影视中文在字幕在线中文 | 国产传媒美日韩av| 97人人操人人干| 丰满人妻aA一区二区三区| 日韩天天本| 夜色五月天| 综合久久久久久久综合网| 日比av无码| 欧美精品久久96人妻无码| 户外裸露刺激视频第一区| 久久久久国产精品久久久| 97精品国产精品免费观看| 99这里有精品| 26uuu国产免费观看| 精…码一二三区| a人片中文字幕一区二区| 精品少妇一区二区三区免费观看| www.91逼逼.com| 欧美九九九| 中文字幕文字幕无码一区二区三区电影99| 女人爽到高潮久久久| 国产精品一级特黄aaa大片在线观看| 东北老熟女| 超碰97资源大奶| 精品性爱无码在线播放| 亚洲AV无码国产成人| 狠狠操官网| 亚洲春色欧美| 亚洲色棕合| 日本少妇va7777| 俺去俺来也在线www| 青青草国产欧美非洲黑人| 亚洲影视高清第一页| 在线人妻熟女一区二区三区四区五区| 婷婷六月色| 性爱乱伦网址| 亚洲三区视频| 新久久AV| 久久精品中文字幕观看| 日韩久久.一级黄色片| 亚洲婷婷丁香在线| 九九视频黄色片| 精品美女少妇一区二区| 小说区 图片区色 综合区| 午夜福利合集| 欧美综合在线第一页| 97频视在线| 国产精品欧美激在线| 国产精品久久发布| 久久国产精品,久久国产| 91人妻爽爽人人做人人澡| 99热这里只有精品9| 亚洲性爱无码乱伦av| 日本色色色视频| 最近2018中文字幕在线高清第一页| 91总综合网| 久久婷婷国产一区二区色| 久久久久久波多野吉衣高潮| 小草av不卡亚洲二区| 欧洲Au麻豆| 精久久久91| 大香蕉中文aV在线| 91无摭挡| 黑人干亚洲| 九九九久| 岛国爱情动作片在国产AV无码专区亚洲AV漫画| 亚洲欧美国产中文视频| 国产美女口爆吞精视频| 久久性爱免费送| 精品人妻美妇91job| 中文字幕一区电影在线观看| 五月丁香综合啪啪| 欧美熟爽综合| 久久久99999久网站| 日本一天色道久久久精品视频| 熟女欧美日韩综合婷婷| 欧美亚洲成人在线一区二区三区| 欧美综合自拍亚洲综合图| 羞答答AV中文字| 亚洲中文丝袜美腿诱惑字幕| 97免费视频在线| 欧美日韩啪啪电影| h无码动漫在线观看| 女人喷水视频在线观看| 五月丁香色色网| 九月丁香婷婷| 中文字幕版| 亚洲的天堂网| A级在线视频| 最近2018中文字幕在线高清第一页| 探花在线免费观看视频国产一区| 91|九色|国产熟女| 狠综合网| 91精品网站| 国产精品麻豆成人av| 国产精品视频麻豆入口| 色色色热| 97一区二区三区视频| 日比av无码| 在线a亚洲视频播放在线| 精品午夜福利国产一区二区在线观看| 天天干夜夜一操| 国产一区在线观看无码AV| 桃花色涩综合影院| 亚洲国产剧情少妇激情| 97日亚洲欧美| 欧美日韩黄片精品在线| 校园春色 男人天堂| 亚洲一区二区 麻豆传媒| 亚欧美色| 久久亚洲AV成人精品无码| 116美女午夜| 亚洲天堂日本| 台欧久久精品视频| 欧美亚洲综合999| 色综合一本| 操B在线观看| 欧美精品第四五页中文字幕在线观看| 亚洲色婷婷综合久久久久中文| 国产精品久久久久久久电影渣男| 蜜色网色哟哟| 丰满少妇一区二区三区免费看| 婷婷色色五月天福利| 搞中出久久| 青草青青久久久久久国产| 成人久久精品| 日本五十路熟女一区二区| 亚洲日本韩国极品一区二区| 97欧美日韩| 国产真实野战在线视频| 男人网站婷婷| 日本孕妇一区二区视频操逼免费看| 婷婷色导航| 免费亚洲国产精品久久一区| 亚欧成人综合影院| 精彩视频日韩| 国产av激情无码久久天堂| 99综合视频| 国产美女91| 嗯啊视频免费在线观看| 亚洲揄拍网| 欧州一区二区三区四区| 超碰97资源大奶| 91综合无码| 丁香五月婷婷五月| 亚洲天堂少妇| 国产精品一二三区福利| 欧美激情亚洲| 色噜噜精品一区二区三| 国产中文福利| av在线播放国产一区| 歐美一級亂黃99在綫精品| 亚洲精品97久久| 亚洲一区二区麻豆影院| 精品人妻丰满熟妇一区二区三| 久久男女激情视频网站| 91亚洲网站| 丁香六月激情| 国产精品久久蜜乳av| 蜜臀av一区二区三区免费观看| 欧美综合色| 口爆综合网| 久久久久久精| m欧洲一级午老| 国模不卡| 欧美大的香蕉有线电视视频| 欧美专区第一页| yaouchengrenav| 91丝袜美腿网站| 视频在线观看免费一区二区三区| 在线情色电影 91大 | 色y情视频免费看| 午夜欧美J进J出白浆流出久久久| AV无码久久久精品| 欧美日综合| 熟妇人妻精品一区二区| 97精品国产97久久久久久户外免费| 精品无码久久久久久久杏吧| 日韩av熟女一区二区三区成人| 成人a级高清视频在线观看| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 亚洲男人天堂2019| 国产一区在线播放| 日日夜夜模| 丁香五月成人| 三级三级三级a级全黄三| 一本色道久久综合狠狠操| 欧美精品99久久久| 欧洲亚洲国产综合在线| 亚洲人妖网| 午夜偷拍久久熟女| 看看日B真人视频| 丁香五月婷婷色| 绯色一区二区三区不卡少妇| 欧美日韩大陆黑人少妇99| 国产特级毛片AAAAAA高潮流水| 在线播放中文字幕| 91艹逼精品| 夜夜爽77777| {男男暴菊gay无套网站| 精品人妻丰满熟妇一区二区三| 亚洲人成色9999精品久久| 久久99人妖视频国产| 欧美天天干| 青青青草伊人精品| 99精品丰满人妻无| 色情五月婷婷| 99国产在线 精品 视频| 亚洲中字幕日本一区二区三区| 人人妻人人色| 一二三四日本视频高清| 国产真实野战在线视频| 国产特级毛片AAAAAA高潮流水 | 日韩内射视频| 天天插天天干| 色九区| 超碰97人人cao| 少妇久久久久久久久| 天天操人人操骚逼网站| 久日综合网| 久久久久久久少妇| 国产女人高潮视频| www久久99| 黄片aaaaa一区| 国产JDAV无码视频在线观看| 97在线免费观看视频| 国产精品粉嫩福利在线| 色一区二区三区综合| 97这里都是精品| 青青操97| 国产最新AV| 美女啊啊啊啊pc| 国产亚洲禁久一区二区| 精品亚洲国产成人精品| 欧美日韩国产中文精品字幕自在自线| 东京热视频网| 国产人妖视频一区在线观看| 欧美亚洲国产91在线| 九九热AV| 97视频在线看| 亚洲 欧美 日韩 国产一区二区| 精品久久无码午夜福利| 中文人妻av高清一区| aV中亚| 大学生美女口爆| 欧美97在线欧| 婷婷在线视频在线观看| 精品无码一区二区三区色欲| 久久综合资源一区二区| 亚欧性爱ab| 久久久久久精品免费看A级| 777AV电影| 久久精品国产亚洲AV无码电影| 狼狼色丁香久久婷婷综合五月| 天天色黄色影院天天操| 亚洲第2页| www欧美性爱| 黄色视频特级毛片| 啊啊啊啊啊啊在线看| 9九九九九视频在线观看| 99自拍B亚洲 | 9 7超碰在线免费观看| 亚洲精品1区| 97久久国产亚洲精品超碰热| 欧美中文综合| 日韩国产精品人妻无码久久久| 乱伦熟女专区| 91 丝袜在线播放| 九九精品无码专区免费| 操操碰| 日韩在线76| 精品视频97| 97超碰这里只有精品| 青青草依人大香蕉| 国产91影院| 四虎国产精品永久地址入口| 自拍偷拍 日韩无码| 亚洲激情网| 高凊专区人人操| 欧美午夜视频| 嗯嗯啊啊的视频| 東南亚性呦成人伦理资源在线视频| 91肉丝| 中文字幕亚韩| 97日韩超碰超碰中文字幕| 久久久久久久久久久久黄色| 精品国产乱码久久久久久久| 大香蕉专区| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 欧美性爱97超碰| 超碰97综合| 伊人久久大香大香线蕉中文| B049AV在线播放| 国产精品麻豆免费视频| 亚洲的天堂网| 激情五月婷| 精品久久久av无码免费| 新视频sss国产| 欧美少妇大量自拍视频在线观看| 99日视频在线免费| 天天天天干| 日婷婷| 神马久久免费电影观看| 成人天天看站长推荐 | www五月| 欧美成人四级在线播放| 午夜爽爽爽| 久久久久久中文版| 亚洲精品丝袜-不卡成人免费……| 级做a爱无码性色永久免费| 97伦乱| 亚洲最大黄网| 天天躁日日躁AAA片李宗瑞| 亚洲色狠| 精品人妻一区二区三区不卡断| 欧美综合在线91| 欧洲综合视频| 欧美久久草熟女| 日韩不卡av一二三| 欧美成人四级在线播放| 操屄日韩| 日韩欧视频| 91路www| 精品视频专区| 丝袜喷水在线| 好湿好紧好爽 视频| 久久久久久国产精品| 久久婷婷精品| 98一区二区精品| 九九伊人网| 九九色图| 97精品综合久久| 91GD.COM| 日韩/97| 亚洲区限制级| 亚洲骚男同com| 天天日熟妇| 久久是精品| 怡红院久久老司机| 97久久精品| 一级婬片120分钟试看| 巨爆乳一区二区爆乳区| 乱伦a片视频| 97欧美性爱| 日韩性爱视频免费在线| 69人妻人人揉人人躁人人精品| 伊人久久大香线综合无码| 亚州男人的天堂| 欧美日韩亚洲少妇寂寞影院正在播放| 蜜臀va69| 欧美精品久久久久久久丰满| 国产精品自拍欧美在线| 中文字幕丝袜美腿| #NAME?| 亚洲天天在线| 亚洲欧洲综合成人av一区| 99亚洲天堂| 大香蕉中文aV在线| 99热国产精品| 中文乱码字字幕在线第5页| 1级午夜影院费免区| 日本国产成人亚洲精品无码| 亚洲自拍欧美国产首页网曝| 欧美色图20p| 国产精品午夜高潮呻吟久久av| 999日韩中文精品观看视频。| 欧亚揄拍偷拍精品视频| 懂色av色欲av蜜臀av| 搡老女人老妇女老妇老熟女怎么读| 夜草欧美| 亚洲男人综合| 91天天爱| 另类 日韩 熟女| 亚洲日韩乱码中文无码蜜桃臀网站 | 欧美三级一级| 亚洲激情在线| 激情综合五月婷婷| 九九久久久| 尤物一级在线免费观看| 97频视在线| 7777奇米影视久久| 久久99手机免费视频| 小说区 图片区色 综合区| 亚洲欧洲综合视频在线| 夜夜无码| 久久久久久中文字幕中文字幕最新| 91亚洲欧美综合高清在线| 亚洲 小说 欧美 激情 另类| 乱老熟女一区二区三区| 欧美日日操| 国产第11页| 日韩不卡在线一区二区| av久日| 日本激情免费大片| 亚欧操逼片在线观看| 九九色精品| 精品人妻一二三| 亚洲 欧美 另类 日韩 人妻一区| 无码精品久久| 色综合1991| 99久久久| 亚洲色系另类精品国产| 大香蕉92| 蜜臀久久一区二区| 国产精品欧美日韩久久| 色九久| 天色综合网| 日本一区二区不卡精品| 亚洲国产精品无码AV久久| 另类 综合 日韩 欧美 亚洲| 美女诱惑爱爱| 日本一本道A级黄色毛片试看60分钟| 中文字幕激情小说| 操b网站亚洲无码| 69精品人人人人| 欧美熟女操屄| 国产精品亚洲天堂网址| 亚洲综合九九| 99999国产精品| 超碰在线综合97| 日韩人妻精品中文字幕| 九九热免费国产视频婷婷伊人五月| 日本免费人成视频播放120秒| 先锋女优在线观看视频| 91无码精品| 久草老司机| 白 大 人妻 区 在线| 久久一二三级一一一| 亚洲天堂久久| 日韩免费人妻色情网站| 一区二区三区精品黑丝白丝酒店对鸡| 天天做日日做天天欢。| 日韩精品碰碰| 亚洲av综合色区无码一| 青青伊人这里只有精品| 色嗨嗨在线| 欧美激情性爱视频网站| 100啪啪视频大全| a'v在线资源| 极品国产内射| av一区二区三区四区| 国产家庭乱伦表演| 欧美欧美啪啪视频| 成人七区| 亚洲综合色网| 91xingse| 男人的天堂VA在线| 国产成人啪一区二区| 人妻天天爽| 国产馆| 国产精品久久久 | 伊人 俄罗斯 a v| 91天天综合网,天天综合网| 五月天久久婷婷亚洲| 久久大线蕉一区| 久久草视频污视频| 五月天日日操夜夜操| 青草地一本线一区二区三区| jizz啪啪| 日韩视频啪啪| 狠狠狠一区二区三区| 国产精品色哟哟| 欧美激情一| 天天干嫩逼网| 69精品久久久久中文字幕| 婷婷五月天伊人| 日本 免费 一区二区三区 久久香蕉 | 男人天堂久久精品| 久久大香蕉手机高清| 狠狠2050在线观看| 曰韩人妻中文字幕在线| 999国产精品999| 九九色精品| 神马午夜久久久| 超碰97丝袜| 天天色综亚洲91污| 久久亚州高清| 91久久久久久久久18| 自拍鲍鱼一区在线高清观看免费| 精品一区二区三区四区外站| 蜜臀AV秘一区翔田千里| 久久人妻办公室视频| 超碰到97情色| 亚洲国产高清福利视频| 舔舔啊| 中国女人内射6XXXXX| 色av中文字幕| 免费?级毛片无码?∨蜜芽试看| 九色 人妻 大香蕉| 成年人黄色视频免费| 国产av高清版| 国产97免费视频| 欧美躁死她一区二区| 亚洲不雅视频1区二区| 激情视频网址| 香蕉精品二区二区 | 天天天天做夜夜夜夜做| 欧美日韩大黄片| 久久久18禁| 3d成人精品一区二区| 美熟女逼导航AV操逼| 99日韩| 天天操妹子| 色99在线| 国产三级在线现体验区| 人人操人人精品影片| 操操啪| 国产精品久久久| 97色色国产视频| 91三级理论片播放器| 大逼色网站| 五月婷婷hd| 在线视频日韩欧美国产| 日韩性爱小视频| 中文字幕精品亚洲熟女| 黑人中出21连凳花野真衣| 大香蕉www.超碰| 欧美激情在线观看视频| 亚洲免费97免费| 婷婷五月天成人| 欧美高清18A片| 人人操人人操人妻人| 精品一国2| 精品一区二区三区最新| 色情成人五月天| 屁屁影院一区二区三区国产| 明星性猛交ⅹxxx乱大交| 欧洲自拍第一页| av婷婷色网| 亚洲天堂中文字幕无码男同| 婷婷激情四射| 色色色五月婷婷| 最新日产中文在线麻豆| 一级性爱啪啪视频| 日韩精品资源专区二区| 国产精品久久久吖| 亚洲成人贴图| 青草精品视频-日本久久久久网站| 久久久久国产| 国产精品久久久久999| 大干人妻| 97国产|免费| 操熟女91| 欧美熟妇成人一区二区| 26UUU欧美日本| 91一区二匹| 91久久青青草原精品| 热99这里有精品综合久久| 青青色在线观看| 青青草好吊色| 在线免费观看高清无码视频| 午夜舔阴达高潮视频免费看| 自拍偷拍草一草| 一区二区三区黄片免费观看| 手机在线看片免费人成视频| 午夜婷婷| 日夜久久久九九九久| 欧美狠狠弄| 久9久精品视频| 婷婷人妻激情| 91在线视频观看国产| 国产成人+综合亚洲+天堂| 色婷婷五月天| 人妻少妇色综合| 国产精品扒开腿做爽爽爽视频| 五月天婷婷在线看| 国产黄色 A 片免费看| 久久这里只精品99re66图| 欧美在线官网| 精品国产乱码久久久久久久久久毛片| 影音先锋少妇| 日韩欧美中文| 热久日综合| 亚洲AV噜噜狠狠网址蜜桃动漫| 在线亚洲丝袜视频网站| 黄片www.| 成人五月天丁香激情综合| 日韩国产十八禁| 国产熟女免费观看久久| 欧美综合色| 亚洲视频,小说| 精品国产久热在线观看| 精品九九| 岛国999| 欧美有码激情视频一区二区三区| 综合亚洲欧美精品日韩?v| 亚洲精品一卡二卡三卡福利视频网站 | 少妇熟女1区2区3区| 国产四虎在线| 国产午夜无码片在线观看影视| 麻豆尤物视频网| 国产一区二区三区久久精品太古里| 一区二区三区激情在线观看| 欧州一区二区三区四区| 蜜桃臀av一区二区| 亚洲精品一区二区免费在线观看| 丁香五月婷婷基地| 成人亚欧免费视频| 国产精品96| 99re热| 亚洲综合码| 五月天激情网图片| 综合免费无码中文| 欧美不卡五十路| JuliaAnn丝袜熟女系列| 中文久久96| 青青国产精品在线| 欧美性生活综合| 秋霞无码av鲁丝片一区| 人人操 欧美| 91黄站| 欧洲自拍第一页| 九九九九一级| 在线观看A啊啊啊| 看日韩美女二区三区免费操逼视频| 人人操人人摸人人看人人干| 蜜乳成人AV| 九九热三级片| 啊啊啊骚| 91色爽欧美| av大香蕉网站| 伊色综合天堂色97| 婷婷综合久久| 九月丁香| 中文字幕在线高清男人的天堂 | 欧洲综合视频| 色婷婷电影网| 欧美婷婷五月天| 国产精品美女视频诱惑| 日本午夜福利影院| 久久五月天婷婷丁香中文字幕| 又大又大又大又粗爽高潮观看| 91日产欧美| 亚洲一区亚洲天堂| 精品人妻一区二区三区夜夜| 久久AV无码1区2区3区| 色狠人在线99| 伊人国产视频| 欧美久久人妻少妇一区二区| 久久久久久久78| 精品久久九| www.男人天堂| 国产女人9999| 欧美综合亚洲| 91美女小视频| 亚洲色图 欧美| 91无遮挡| 亚洲熟女精品| 逼逼逼逼操操操操操操操操操午夜剧场| 日本操逼视频不卡直接放| 国产美女自拍AV| 亚洲女毛多水多21P| 超碰成人最新最好看| 久热香蕉精品在线视频| 天天干天天燥| 欧美日韩岛国大片在线观看| 欧美黄色大香蕉一区二区| 国产伦乱91| 欧美视频在线第3页| 偷窥自拍亚洲色图| A啊啊在线观看| 男人天堂久久日韩| 蜜桃臀一区二区三区久久| 久久久久久无码人妻中文字幕| 欧美淫乱视频| 欧美性爱精品七区| 奇米狠999| 九热视频| 97一区二区蜜臀| 久久一区二区加油站| 欧洲站一级二级三级h| 色九久| 大学生口爆吞精| 加勒比在线视频一区二区三区| 亚洲精品人妻吞精av| 亚洲天堂区| 伊人久久亚洲中文字幕不卡| 自拍啪啪视频| 欧美欧美啪啪视频| 日本3级一区二区免费| 啪啪视频mP4| 久久大陆| 国产精品另类一区大香蕉| 精品久久久av无码免费| 中国一区二区亚洲人妻| 91N欧美| 中文字幕免费看| 97在线观看免费视频| 麻花传媒免费网站在线观看| 乱伦3P视频| 久久人人爽爽爽人久久久| 偷拍2020| 狠狠超| 亚洲九区| 麻豆精品三区视频| 天天色欧美| 欧美日韩操逼嗦吊| 欧美第38页| 99在线精品视频| 欧美一区二区三区另类精品| 玖玖人人爱| 97爱啪| 人人操,人人插| 99热精品在线| 亚洲精品黑丝| 婷婷在线视频在线观看| 蜜桃精品一区二区三区ww| 日韩精品影视| 国产午夜在线观看视频| 国产精品久久发布| 国产嫩草精品A88AV| 岛国黄| 免费看一级a性色生活片久久无| 天天看高清麻豆| 肉动漫无遮挡h在线观看| 成人国产精品三级A片| 欧美超碰人妻97| 在线播放成人高清免费视频| 欧美极品少妇交| 丰满人妻一区二区三区免费| 欧美久久伊人| 久久九精品| 精品78| 欧美天天插| 国产精选视频| 强奸xx国产| 99AV| www激情| 九九九九九九综合| 91|九色|国产熟女| 欧美,日韩,中文,另类| 日韩欧美国产一区二区三区四区| 精品九九淫乱男| 国产一区免费午夜视频| 欧美精品第四五页中文字幕在线观看| 一个人免费视频观看在线WWW| 亚州色交| 男人午夜天堂| 婷婷色在线| 色欧美亚洲| 夜夜一区二区| 天天综合中文字幕 91| 中文字幕乱码在线观看| 亚洲av强奸乱伦| 黄页网站成人免费| 欧美综合站| 亚洲色图欧美色图另类图片| 亚码激情| 老司机深夜18禁污污网站| 日韩超碰精品综合| 都市久久精品激情亚洲| 是还免费视频1727我| 思思热久久成人| 日韩视频小说在线观看| 蜜乳性色无码专日粉嫩骚逼AV| 久久久久国产精品人妻aⅴ天堂| 久久久久久国产无码精品| 国产精品夜夜夜| 婷婷综合在线| 国产久久久久久| 北条麻妃99精品青青久久| 国产精品女aA片爽爽视频| 亚洲欧美综合色| 久久久久亚洲Av无码专区老牛影视| 人妻人人澡人人爽人人| 国产亚洲日韩在线三区黑人| 亚洲啪啪啪啪视香蕉| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 日韩精品三级| 成人情色一区二区| 性综合网| 97色涩| 四色永久成人网站| 97超碰色| 99热这里只有是精品10| 色色婷| 色综合国产在线观看| 粉嫩AV一区夜夜嗨| 亚洲AV免费在线| 一区二区三区美女超清| 久久久国产精品亚洲精品| 天天射影院| 一级人妻性爱视频| 热热色青青草| 男人干美女| 再深点灬舒服灬太大了好硬好爽| 不卡在线观看视频| 少妇99| 婷婷香蕉欧美在线一区二区三区| 久久超碰网| 亚洲久草AV色图| 国产精品青青草| 中国农村熟妇毛片视频| 国产地址二三| 920日本午夜免费| 91社操逼| 国产成人99久久亚洲综合| 色97综合中文字幕| 国产蜜臀精品一区免费尤物| 熟女人妻一区二区三区| 久96热在线观看视频| 超碰这里有精品| 99xav| 国产九月婷婷| 激情接吻视频久久久久久| 亚洲日韩精品久久久久一区壹牛| 婷婷性网| 亚州色图片在线色| 欧美色66| 高潮内射在线| 亚洲五月婷婷| 黄色性爱网网| 交换娇妻呻吟声不停中文字幕| 久久九色| 久久久久国色αv免费观看| 久久久男人的天堂| 久久久久久9999| 99久久com免费视频′| 国产精品久久久三级无码| 自拍视频一区在线观看| 69视频入口| 色逼综合| 日本媚薬中文字幕在线| 国产乱不卡| 亚洲综合性网址| 青青欧洲黑| 亚洲人妻熟妇三十三区| 人人澡人人爽人人精品| 日本三级韩国三级99| 影音先锋中文字幕日本好一区二区| 岛国片国产成人亚洲播放| 亚洲国产美女久久久久 | 欧美伦乱爱| 亚洲天堂另类小说男人| 天天日天天舔天天喷天天射| 久久久无码国精品无码三区三区| 日韩在线观看中文字幕视频| 久久久久成人亚洲国产| 免费在线观看国内色片网站网址| 国产二区视频在线观看电影| 亚洲男人的天堂va亚洲男人社| 青青草一区二区高清无码视频 | 狠狠久久亚洲欧美专区| 水澄无码AV| 亚洲男人天堂2019| 中文字幕在线观看视频www| 97自拍视频在线| 五月丁香啪啪| 丝袜熟女一区二区三区| 丁香婷婷九月| 亚洲欧综合另类无码一区| 亚洲国产另类在线中文| 国产精品不卡高清在线观看| 中文久久| a男人的天堂久久一级A毛片| 国语对白露脸XXXXXX| 精品高清av中文字幕| 久久国产成人精品国产成人亚洲| 桑老女人九区| 久久久久久久| 欧美伊人电影| 国产精品农村妇女| 91性感在线| 久久精品国产Aⅴ| 伊人操| 蜜乳中文字幕a在线| 国产不良强奸视频免费看| 国产亚洲精品农村妇女| 插日本熟女视频| 日本在线激情一区二区三区| 激情综合色| 大香蕉 222| 精品免费国产二区三区| 丝袜天堂网| 最新制服中文第一页| 26uuu成人影片| 在线欧美69V免费观看视频| 久久久免费一级黄片| 美女超碰978| 久久、1234| 色图四区| 国产又色又粗又黄又爽| 岛国AB视频| 亚洲,欧美,春色,另类| 女人一区| 视频二区美腿制服人妻欧美| 精品999999| 凹凸久久人人| 国产欧美伊人| 蜜乳av一区二区三区四区不卡| 色五月av| 懂色av色欲av蜜臀av| 婷婷五月天av| 狠狠躁天天躁日日躁| 亚洲区小说| 韩国一级婬片A片无码天美| 性爱av在线免费观看| 97综合在线观看| 92大香蕉| 综合伊人激情| 亚洲丝袜二区| 麻豆 亚洲 97| 亚洲天堂久| 久久伊人亚洲AV无码网站| 一块操欧美性爱| 先锋音影AV| 欧亚日韩中文在线| 在线观看成人性爱免费小视频| 国产亚洲色婷婷久久99精品91| 97久久精品亚洲中六字幕| 精品国产乱码久久久| 国产精品高潮呻吟av久久4虎| 国产精品青草综合久久| 天天干天天日天天射黄色片| 日本在线伊人啪啪| 人人操人人摸人 | 日韩性爱1级片视频| 神马福利久草| 欧美91网| 欧美日韩操逼动图| 国产传媒一区日韩| 美女黄站| 欧洲色| 久久9精品网站| а√天堂资源官网在线资源| 日日日日日| 俺也射| 日韩国产乱子伦App| 少妇同性| 欧美日韩*字幕一区| 婷婷五月天激情网| 青青青草伊人精品| 亚洲国产一区二区日韩专区| 亚洲 欧美 天天| 国产传媒日韩| 久久久网站| 欧美亚洲天天| 精品人妻美妇91job| 天操天操夜操夜月月年年操操| 日韩操逼HD| 欧美性战999| 亚洲一区操| 亚洲男人天堂网久久| 污色区网站| 亚洲AV无码天美传媒一区| 人妻欧美| 99成人| 人人妻天天做天天爽| 熟女色综合久久| 久草精品一区| 国产午夜无码片在线观看影视| 久久久久一本一区二区青青蜜月| 测评在线观看AV| 一品道视频一区二区三区| 欧美人妻制服| 久久97| 亚洲天堂欧美| 大香蕉伊人网WWWn0n| 久久精品国产亚洲妲己影视| 亚洲人在线成线成人| 亚洲国产一级黄色视频| 中文字幕精品人妻丝袜| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 亚洲中亚日激情视频| 激情小说成人日本无码一| 亚欧美色图| 国产97色在线| 四虎av在线| 久久精彩视频| 麻豆国产97在线| 人妻社区男人天堂| A 天堂| 欧美综合制服在线| 天天操天天射天天日| 91激情国产| 五月丁香综合激情| 国产日韩精品suv| 欧美 牲| 人人扣人人操| 麻豆成人影音在线| 夜夜嗷嗷一区二区| 久干9操| 欧美色宗合| 丝袜视频一区二区在线播放国产中文 | 美女午夜福利免费视频| 日本一卡二区在线| 成人精品在线观看| 视频国产成人精品日本亚洲18| 精品99999久久久久久| 欧美的性爱网站免费| 2019天天操天天爽天天拍| 国产欧美日韩精品中文| 亚91网| 久久爽爽精品| 日韩午夜啪啪视频| 蜜乳视频网站| 亚洲女人毛茸茸91| 动漫片子网站3黄| 超碰在线香蕉| 午夜超碰| 欧美久久久| 看看小穴| 亚洲成a人片在线观看中文!!!| 欧美第二页| 超碰1997| 视频在线观看一二三区| 欧美大香蕉同搞| 欧美亚洲丝袜人妻制服中文99| 亚洲欧美九九九| 成人精品一区二区91毛片不卡| 超碰诱惑| 色制服丝袜夫妻av一区| 欧美色偷拍| 韩国成人精品久久久免费看| 91操操操操| 97精品视频在线播放| 蜜臀人妻少妇久久在线观看| 91狼人| 国产精品国产自产高清AV| 凌辱美少妇久久aV| 少好三P| 成 人 影视 一区 二区 三区 四区 | 免费观看的黄色的网站| 97资源站国产精品| 国产精品亚洲四五区在线观看| 日本人妻A片成人免费看片| 成人 日本A片无码8888| 免费观看网黄| 殴美性天天| 人人操人人精品影片| 亚州精品丝袜-不卡成人免费| 熟女精品一区二区三区| 国产亚洲精品av一区| 国产精品久久久久无码Av网曝门| 国产伊人精品在线| 欧美最大综合网| 97资源欧美| 96AV久久久| 日韩三级一区 | 欧美情色男人的天堂| 欧美激情亚洲情色| 99久久综合| 狠狠五月天| 欧美日韩性爱精品| 色色香蕉| 日韩色欲久久一二三四区| 日韩三级在线观看网站| 97香蕉网| 91视频在线观看18| 欧美不在线| 久热这里只有精品9| 天天综合91入口| 懂色av中文字幕一区二区三区天美| 蜜臀99999| 欧美 传媒 麻豆 日韩 偷拍| 亚洲综合有玛| 久久免费中文字幕在线观看| 偷拍欧美激情| 日韩欧美麻豆大片| 精品视频日日夜夜| 色五91| 97色色网| 大香交伊人网| 色婷婷电影| 久久天天摸| 美女超碰978| 日韩AV中文字幕电影| 麻豆天美久久91| 成年男人的天堂| 中文有码第五页| 亚洲色图国产另类| 午夜欧美神马久久久久| 一区二区三区成人| Av色五月| 丰满精品人妻少妇久久字幕| 欧美日韩天堂| 久久噜| 麻豆一区二区AV天美| 婷婷人妻激情| 男人的天堂 在线一区| 亚洲黑人在线| 国产精品免费1区2区视频| 国产隔壁老王影院在线| 韩国成人精品久久久免费看| 成人a大片在线观看| 日韩激情啪啪| 婷婷激情四射| 久久一二区四| 亚洲吊色| 四虎av在线| 97aiaiai| 懂色av色欲av蜜臀av| 尤物av网站免费在线播放| 乱伦图av| 九九热精品视频在线观看| 天天日老熟妇| 人妻人妻天天碰| 久久成人精品| 91精品无码久久久久久久| 日韩综合成人免费视频| 精品久久人妻成人网| 天天影视色香色欲|