精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Pandas圖鑒:Series 和 Index

數據庫 其他數據庫
Polars是Pandas最近的轉世(用Rust編寫,因此速度更快,它不再使用NumPy的引擎,但語法卻非常相似,所以學習 Pandas 后對學習 Polars 幫助非常大。

Pandas[1]是用Python分析數據的工業標準。只需敲幾下鍵盤,就可以加載、過濾、重組和可視化數千兆字節的異質信息。它建立在NumPy庫的基礎上,借用了它的許多概念和語法約定,所以如果你對NumPy很熟悉,你會發現Pandas是一個相當熟悉的工具。即使你從未聽說過NumPy,Pandas也可以讓你在幾乎沒有編程背景的情況下輕松拿捏數據分析問題。

Pandas 給 NumPy 數組帶來的兩個關鍵特性是:

  1. 異質類型 —— 每一列都允許有自己的類型
  2. 索引 —— 提高指定列的查詢速度

事實證明,這些功能足以使Pandas成為Excel和數據庫的強大競爭者。

Polars[2]是Pandas最近的轉世(用Rust編寫,因此速度更快,它不再使用NumPy的引擎,但語法卻非常相似,所以學習 Pandas 后對學習 Polars 幫助非常大。

Pandas 圖鑒系列文章由四個部分組成:

  • Part 1. Motivation:Pandas圖鑒(一):Pandas vs Numpy
  • Part 2. Series and Index
  • Part 3. DataFrames
  • Part 4. MultiIndex

我們將拆分成四個部分,依次呈現~建議關注和星標@公眾號:數據STUDIO,精彩內容等你來~

Part 2. Series 和 Index

Series剖析Series剖析

Series是NumPy中一維數組的對應物,是DataFrame代表其列的基本構件。盡管與DataFrame相比,它的實際重要性正在減弱(你完全可以在不知道Series是什么的情況下解決很多實際問題),但如果不先學習Series和Index,可能很難理解DataFrame的工作原理。

在內部,Series將數值存儲在一個普通的NumPy向量中。因此,它繼承了它的優點(緊湊的內存布局,快速的隨機訪問)和缺點(類型同質性,緩慢的刪除和插入)。在此基礎上,可以通過標簽訪問Series的值,使用一個叫做index的類似數字的結構。標簽可以是任何類型的(通常是字符串和時間戳)。它們不需要是唯一的,但唯一性是提高查詢速度所需要的,并且在許多操作中都是假定的。

圖片圖片

現在每個元素都可以用兩種方式來處理:通過label(=使用索引)和通過position(=不使用索引):

圖片圖片

按位置尋址by position 有時被稱為 by positional index,這只是增加了混亂。

很明顯,一對方括號是不夠的。特別是:

  • s[2:3]不是解決2號元素的最方便方式
  • 如果標簽恰好是整數,s[1:3]就變得模糊不清。它可能是指標簽1到3(含)或位置指數1到3(不含)。

為了解決這些問題,Pandas又有兩種方括號的 "口味":

圖片圖片

  • .loc[]總是使用標簽并包括區間的兩端;
  • .iloc[]總是使用位置索引,并排除了右端。

在這里使用方括號而不是小括號的目的是為了獲得方便的Python切分:可以使用一個單冒號或雙冒號,其含義是熟悉的start:stop:step。缺失的 start(end) 就是從系列的開始(到結束)。步驟參數允許用s.iloc[::2]來引用偶數行,用s['Paris':'Oslo':-1]來獲取反向順序的元素。

它們還支持布爾索引(用布爾數組進行索引),如該圖所示:

Series.isin(), Series.between()Series.isin(), Series.between()

而可以在這張圖片中看到他們是如何支持 "花式索引" 的(用整數陣列進行索引):

圖片圖片

由于某些原因,Series沒有一個漂亮的富文本外觀,所以與DataFrame相比,看似比較低級:

圖片圖片

這里對Series進行稍加修飾,使其看起來更好,如下圖所示:

圖片圖片

豎線意味著這是一個Series,而不是一個DataFrame。

也可以用pdi.sidebyside(obj1, obj2, ...)來并排顯示幾個系列或DataFrames:

圖片圖片

pdi(代表pandas illustrated)是github上的一個開源庫pdi[3],具有本文的這個和其他功能。安裝非常方便:

pip install pandas-illustrated

索引

負責通過標簽獲取系列元素(以及DataFrame的行和列)的對象被稱為索引。索引速度很快:無論有5個元素還是50億個元素,都可以在一定的時間內得到結果。

索引是一個真正的多態對象。默認情況下,當創建一個沒有索引參數的Series(或DataFrame)時,它初始化為一個類似于Python的range()的惰性對象。就像range()一樣,它幾乎不使用任何內存,并提供與位置索引相吻合的標簽。

現在創建一個有一百萬個元素的系列:

>>> s = pd.Series(np.zeros(10**6))
>>> s.index
RangeIndex(start=0, stop=1000000, step=1)
>>> s.index.memory_usage() # 字節數
128 # 與Series([0.])的情況相同

現在,如果刪除一個元素,索引就會隱含地變形為一個類似口令的結構,如下所示:

>>> s1 = s.drop(1)
>>> s1.index
Int64Index([ 0, 2, 3, 4, 5, 6, 7、
      ...
      999993, 999994, 999995, 999996, 999997, 999998, 999999],
      dtype='int64', length=999999)
>>> s1.index.memory_usage()
7999992

這個結構消耗了8Mb的內存!,為了避免這種情況,并回到輕量級的類似范圍的結構,我們寫下:

>>> s2 = s1.reset_index(drop=True)。
>>> s2.index
RangeIndex(start=0, stop=999999, step=1)
>>> s2.index.memory_usage()
128

如果你是Pandas的新手,你可能會想為什么Pandas不自己做呢?對于非數字標簽來說,這有點顯而易見:為什么(以及如何)Pandas在刪除一行后,會重新標記所有后續的行?對于數字標簽,答案就有點復雜了。

首先,Pandas 純粹通過位置來引用行,所以如果想在刪除第3行之后再去找第5行,可以不用重新索引(這就是iloc的作用)。

第二,保留原始標簽是一種與過去某個時刻保持聯系的方式,就像 "保存游戲" 按鈕。如果你有一個有一百列和一百萬行的大表,需要找到一些數據。你逐一進行了幾次查詢,每次都縮小了搜索范圍,但只看了列的一個子集,因為同時看到所有的一百個字段是不現實的。現在你已經找到了目標行,想看到原始表中關于它們的所有信息。一個數字索引可以幫助你立即得到它。

從原理上講,如下圖所示:

圖片圖片

一般來說,需要保持索引值的唯一性。例如,在索引中存在重復的值時,查詢速度的提升并不會提升。Pandas沒有像關系型數據庫那樣的 "唯一約束"(該功能[4]仍在試驗中),但它有一些函數來檢查索引中的值是否唯一,并以各種方式刪除重復值。

有時,但一索引不足以唯一地識別某行。例如,同名的城市有時碰巧出現在不同的國家,甚至在同一個國家的不同地區。因此,(城市,州)是一個比單獨的城市更適合識別一個地方的候選者。在數據庫中,它被稱為 "復合主鍵"。在Pandas中,它被稱為MultiIndex(第4部分),索引內的每一列都被稱為level。

索引的另一個重要特性是它是不可改變的。與DataFrame中的普通列相比,你不能就地修改它。索引中的任何變化都涉及到從舊的索引中獲取數據,改變它,并將新的數據作為一個新的索引重新連接起來。例如,要將列名就地轉換為字符串(節省內存),可以寫df.columns = df.columns.astype(str),或者不就地轉換(對鏈式方法有用)df.set_axis(df.columns.astype(str), axis=1)。但正是由于不可更改性,不允許只寫df.City.name = 'city',所以必須借助于df.rename(columns={'City': 'city'})。

索引有一個名字(在MultiIndex的情況下,每一層都有一個名字)。而這個名字在Pandas中沒有被充分使用。一旦在索引中包含了列,就不能再使用方便的df.column_name符號了,而必須恢復到不太容易閱讀的df.index或者更通用的df.loc[]。有了MultiIndex。df.merge--可以用名字指定要合并的列,不管這個列是否屬于索引。

按值查找元素

考慮以下Series對象:

圖片圖片

索引提供了一種快速而方便的方法,可以通過標簽找到一個值。但是,通過值來尋找標簽呢?

s.index[s.tolist().find(x)] # 對于len(s)< 1000來說更快
s.index[np.where(s.value==x)[0][0]] # 對于 len(s) > 1000,速度更快

pdi中有一對包裝器,叫做find()和findall(),它們速度快(因為它們根據Series的大小自動選擇實際的命令),而且更容易使用。

如下代碼所示:

>>> import pdi
>>> pdi.find(s, 2)
'penguin'
>>> pdi.findall(s, 4)
Index(['cat', 'dog'], dtype='object')

缺失值

Pandas使用者對缺失值特別關注。通常情況下,可以通過向read_csv提供一個標志來接收一個帶有NaN的DataFrame。否則,可以在構造函數或賦值運算符中使用None(盡管對于不同的數據類型,它的實現方式略有不同),例如:

圖片圖片

對于NaN,可以做的第一件事是了解是否有任何NaN。從上圖可以看出,isna()產生一個布爾數組,而.sum()給出缺失值的總數。

現在你知道它們的存在,可以選擇通過刪除、用常量值填充或插值來擺脫它們,如下所示:

fillna(), dropna(), interpolate()fillna(), dropna(), interpolate()

另一方面,可以繼續使用它們。大多數Pandas函數都會忽略缺失的值:

圖片圖片

更高級的函數(median, rank, quantile等)也是如此。

算術操作是根據索引來調整的:

圖片圖片

在索引中存在非唯一值的情況下,其結果是不一致的。不要對具有非唯一索引的系列使用算術運算。

比較

對有缺失值的數組進行比較可能很棘手。這里有一個例子:

>>> np.all(pd.Series([1., None, 3.]) ==
      pd.Series([1., None, 3.]))
False
>>> np.all(pd.Series([1, None, 3], dtype='Int64') ==
      pd.Series([1, None, 3], dtype='Int64'))
True
>>> np.all(pd.Series(['a', None, 'c']) ==
      pd.Series(['a', None, 'c']))
False

為了正確地進行比較,NaN需要被替換成保證在數組中缺少的東西。例如,用''、-1或∞:

>>> np.all(s1.fillna(np.inf) == s2.fillna(np.inf))  #對所有的dtypes都有效
True

或者更好的是,使用標準的NumPy或Pandas比較函數:

>>> s = pd.Series([1., None, 3.])
>>> np.array_equal(s.value, s.value, equal_nan=True)
True
>>> len(s.compare(s)) == 0
True

這里,比較函數返回一個差異列表(實際上是一個DataFrame),而array_equal直接返回一個布爾值。

當比較混合類型的DataFrame時,NumPy就會出問題(問題#19205[5]),而Pandas做得非常好。下面是這一情況:

>>> df = pd.DataFrame({'a': [1., None, 3.], 'b': ['x', None, 'z']})
>>> np.array_equal(df.values, df.values, equal_nan=True)
TypeError
<...>
>>> len(df.compare(df)) == 0
True

添加、插入、刪除

盡管系列對象應該是大小不可變的,但有可能在原地追加、插入和刪除元素,但所有這些操作都是:

  • 緩慢,因為它們需要為整個對象重新分配內存并更新索引;
  • 痛苦的不方便。

下面是插入數值的一種方式和刪除數值的兩種方式:

圖片圖片

第二種刪除值的方法(通過刪除)比較慢,而且在索引中存在非唯一值的情況下可能會導致復雜的錯誤。

Pandas有df.insert方法,但它只能將列(而不是行)插入到數據框架中(而且對序列根本不起作用)。

另一種追加和插入的方法是用iloc對DataFrame進行切片,應用必要的轉換,然后用concat把它放回去。pdi中實現了一個叫做insert的函數,可以自動完成這個過程:

圖片圖片

注意,(就像在df.insert中一樣)插入的位置是由0<=i<=len(s)的位置給出的,而不是由索引中的元素的標簽。

你可以為一個新元素提供一個標簽。對于一個非數字性的索引,它是必須的。例如:

圖片圖片

要通過標簽指定插入點,你可以把pdi.find和pdi.insert結合起來,如下圖所示:

圖片圖片

注意,與df.insert不同,pdi.insert返回一個副本,而不是在原地修改Series/DataFrame。

統計數據

Pandas提供了全方位的統計功能。它們可以深入了解百萬元素系列或數據框架中的內容,而無需手動滾動數據。

所有的Pandas統計函數都會忽略NaN,如下圖所示:

圖片圖片

注意,Pandas std給出的結果與NumPy std不同。

由于系列中的每個元素都可以通過標簽或位置索引來訪問,所以有一個argmin(argmax)的姐妹函數,叫做idxmin(idxmax),如圖所示:

圖片圖片

下面是Pandas的自描述性統計函數的列表,供參考:

  • std,樣本標準差;
  • var,無偏方差;
  • sem,無偏標準誤差的平均值;
  • quantile,樣本四分位數(s.quantile(0.5) ≈ s.median());
  • mode,即出現頻率最高的值;
  • nlargest和nsmallest,默認情況下,按外觀順序排列;
  • diff,第一次離散差分;
  • cumsum和cumprod,累積和,以及乘積;
  • cummin和cummax,累積最小和最大。

還有一些更專業的統計功能:

  • pct_change,當前和前一個元素之間的變化百分比;
  • skew,無偏差的偏度(第三時刻);
  • kurt 或 kurtosis,無偏的谷度(第四時刻);
  • cov,corr 和 autocorr,協方差,相關,和自相關;
  • rolling、加權和指數加權的窗口。

重復數據

特別注意檢測和處理重復的數據,可以在圖片中看到:

is_unique,nunique, value_countsis_unique,nunique, value_counts

drop_duplicates 和 duplicated 可以保留最后出現的,而不是第一個。

請注意,s.unique()比np.unique要快(O(N)vs O(NlogN)),它保留了順序,而不是像np.unique那樣返回排序后的結果。

缺失值被當作普通值處理,這有時可能會導致令人驚訝的結果。

圖片圖片

如果想排除NaN,你需要明確地做到這一點。在這個特殊的例子中,s.dropna().is_unique == True。

還有一個單調函數家族:

  • s.is_monotonic_increasing()、
  • s.is_monotonic_decreasing()、
  • s._strict_monotonic_increasing()、
  • s._string_monotonic_decreasing()
  • s.is_monotonic() - 這是s.is_monotonic_increasing()的同義詞,對于單調下降的序列返回False!

字符串和正則表達式

幾乎所有的Python字符串方法在Pandas中都有一個矢量的版本:

count, upper, replacecount, upper, replace

當這樣的操作返回多個值時,有幾個選項來決定如何使用它們:

split, join, explodesplit, join, explode

如果知道正則表達式,Pandas也有矢量版本的常用操作:

findall, extract, replacefindall, extract, replace

Group by

在數據處理中,一個常見的操作是計算一些統計數據,而不是對整個數據集,而是對其中的某些組。第一步是通過提供將一個Series(或一個DataFrame)分成若干組的標準來建立一個惰性對象。這個惰性的對象沒有任何有意義的表示,但它可以是:

  • 迭代(產生分組鍵和相應的子系列--非常適合于調試):

groupbygroupby

  • 以與普通系列相同的方式進行查詢,以獲得每組的某個屬性(比迭代快):

圖片圖片

所有操作都不包括NaNs

在這個例子中,根據數值除以10的整數部分,將系列分成三組。對于每一組,要求提供元素的總和,元素的數量,以及每一組的平均值。

除了這些集合功能,還可以根據特定元素在組內的位置或相對價值來訪問它們。下面是這種情況:

min, median, max, first, nth, lastmin, median, max, first, nth, last

你也可以用g.agg(['min', 'max'])一次計算幾個函數,或者用g.describe()一次顯示一大堆的統計函數。

如果這些還不夠,也可以通過自己的Python函數傳遞數據。它可以是

  • 用g.apply(f)接受一個組x(一個系列對象)并生成一個單一的值(如sum())的函數f。
  • 一個函數f接受一個組x(一個系列對象),并用g.transform(f)生成一個與x相同大小的系列對象(例如,cumsum())。

圖片圖片

在上面的例子中,輸入的數據被排序了。這對于groupby來說是不需要的。實際上,如果組內元素不是連續存儲的,它也同樣能工作,所以它更接近collections.defaultdict而不是itertools.groupby。而且它總是返回一個沒有重復的索引。

圖片圖片

與defaultdict和關系型數據庫的GROUP BY子句不同,Pandas groupby是按組名排序的。它可以用sort=False來禁用,如下代碼所示:

>>> s = pd.Series([1, 3, 20, 2, 10])
>>> for k, v in s.groupby(s//10, sort=False):
       print(k, v.tolist())
0 [1, 3, 2]
2 [20]
1 [10]

參考資料

[1]Pandas: https://pandas.pydata.org/

[2]Polars: https://www.pola.rs/

[3]pdi: https://github.com/axil/pandas-illustrated

[4]該功能: https://pandas.pydata.org/docs/reference/api/pandas.Flags.allows_duplicate_labels.html

[5]問題#19205: https://github.com/numpy/numpy/issues/19205

責任編輯:武曉燕 來源: 數據STUDIO
相關推薦

2023-07-31 11:44:38

Pandas性能數組

2021-08-17 09:55:50

pandas 8indexPython

2011-08-29 16:08:11

MIUI小米手機

2024-11-26 08:00:00

SQLPandasPandaSQL

2011-03-30 11:00:53

Windows 8

2020-04-24 15:47:31

互聯網公司裁員

2022-07-14 09:24:28

大數據技術

2020-03-10 08:55:50

PandasNumPy函數

2023-10-15 17:07:35

PandasPython庫

2023-07-06 14:49:44

PandasPolars語法

2010-09-15 13:54:36

WidgetOPhone

2023-05-05 18:45:21

Python人工智能機器學習

2021-06-08 09:18:54

SQLPandas數據透視表

2023-11-30 15:53:43

2025-07-09 07:50:00

2022-06-17 10:52:01

數據存儲采集

2021-01-22 05:53:08

C# IndexRange

2012-12-14 14:48:01

諾基亞Series 40S40

2018-07-30 09:33:21

2010-08-31 10:30:59

CSSpositionz-index
點贊
收藏

51CTO技術棧公眾號

激情五月色婷婷| 黄色一级在线视频| 国产福利第一页| av成人激情| 在线看片第一页欧美| 91高清国产视频| 国产啊啊啊视频在线观看| 久久影院电视剧免费观看| 成人写真视频福利网| 成人免费看片98| 国产欧美日韩免费观看| 日韩欧美一区二区视频| caopor在线视频| 怡红院红怡院欧美aⅴ怡春院| 99国产精品久久久久久久久久久| 国产精品自拍视频| 国产主播在线观看| 久久在线电影| 亚洲美女在线观看| 国产91在线免费观看| 日韩电影大全网站| 亚洲综合清纯丝袜自拍| 新呦u视频一区二区| 六月丁香色婷婷| 极品销魂美女一区二区三区| 68精品国产免费久久久久久婷婷| 全网免费在线播放视频入口| heyzo久久| 日韩毛片中文字幕| 中文字幕18页| 欧美一级片网址| 欧美在线小视频| 青青草视频在线免费播放| 国产精品一卡二卡三卡| 欧美国产日本韩| 蜜桃视频成人| 天天摸天天碰天天爽天天弄| 国产一区亚洲一区| 成人网页在线免费观看| 中文字幕+乱码+中文| 国产精品一区毛片| 国模吧一区二区| 九九热视频精品| 中文字幕一区二区三区欧美日韩| 色噜噜狠狠狠综合曰曰曰88av| 国产区一区二区三区| 亚洲一区 中文字幕| 久久影视一区| 在线观看国产精品日韩av| 丰满少妇一区二区三区| 老司机成人在线| 精品福利在线导航| xxxx视频在线观看| 欧美电影院免费观看| 91精品婷婷国产综合久久性色| 手机视频在线观看| 欧美xnxx| 欧美日韩一二三区| 午夜国产福利在线观看| 亚洲国产91视频| 678五月天丁香亚洲综合网| 日日干日日操日日射| 成人免费观看49www在线观看| 91精品国产综合久久蜜臀| 欧美在线a视频| 日韩一级淫片| 欧美精品一区二区三区久久久| 中国男女全黄大片| 国产乱论精品| 国产网站欧美日韩免费精品在线观看| 免费污网站在线观看| 成人系列视频| 乱亲女秽乱长久久久| 激情五月婷婷在线| 99精品视频免费观看| 欧美专区日韩视频| 国产精品传媒在线观看| 久久狠狠亚洲综合| 高清av免费一区中文字幕| 熟妇人妻一区二区三区四区| 久久久精品欧美丰满| 一本色道久久99精品综合| v片在线观看| 婷婷亚洲久悠悠色悠在线播放| 成熟老妇女视频| 最新亚洲国产| 日韩高清中文字幕| 精品人妻中文无码av在线| 91精品二区| 97国产在线视频| wwwwww在线观看| 岛国精品一区二区| 热舞福利精品大尺度视频| 日本在线天堂| 午夜av电影一区| 天天干天天草天天| 国产伦理久久久久久妇女 | 亚洲一区二区在线免费观看视频 | 亚洲成人激情在线| 国产人妻大战黑人20p| 91精品国产视频| 91精品国产高清久久久久久| 中文字幕第一页在线播放| 大桥未久av一区二区三区中文| 日韩精品一区二区三区外面 | 日韩不卡的av| 国产精品免费大片| 欧美激情一区二区三级高清视频 | 久久综合综合久久综合| 国产精品18毛片一区二区| 国产一区精品| 性做久久久久久免费观看| 2025韩国理伦片在线观看| 久久资源综合| 免费99精品国产自在在线| 日韩综合在线观看| 粉嫩aⅴ一区二区三区四区| 天天综合狠狠精品| 台湾佬中文娱乐网欧美电影| 日韩小视频在线观看专区| 永久免费av无码网站性色av| 99热在线精品观看| 99精品国产高清一区二区| 日本中文字幕视频在线| 日本道精品一区二区三区| 99久久免费看精品国产一区| 欧美91精品| 久久精品国产91精品亚洲| aaa人片在线| 国产成人精品亚洲777人妖| 亚洲欧美久久久久一区二区三区| 伊人网在线播放| 亚洲成人精品久久久| 久久久久亚洲av无码专区体验| 美国十次了思思久久精品导航| 欧美日韩一区在线播放| 老牛影视精品| 亚洲电影在线看| 国产无码精品视频| 粉嫩久久99精品久久久久久夜| 黄色一级片国产| 精品欧美视频| 美女av一区二区| 99国产精品一区二区三区| 日韩一区在线看| 污视频网站观看| 色婷婷热久久| 国产精品吴梦梦| √新版天堂资源在线资源| 欧美中文字幕一区| 五月激情四射婷婷| 另类小说一区二区三区| 亚洲砖区区免费| 99视频这里有精品| 欧美www在线| av中文字幕免费| 亚洲综合一区二区| 四虎永久免费观看| 尤物在线精品| 久久riav二区三区| 超碰aⅴ人人做人人爽欧美| 亚洲美女性生活视频| 中文字幕+乱码+中文乱码www| 中文字幕+乱码+中文字幕一区| jizz18女人| 欧美永久精品| 国产无套精品一区二区| 国产伦精品一区二区三区视频金莲| 亚洲色图35p| 一区二区三区午夜| 一区二区三区视频在线观看| 香蕉视频污视频| 久久国产精品久久w女人spa| 午夜精品福利一区二区| 97色婷婷成人综合在线观看| 精品自在线视频| 国产又爽又黄网站亚洲视频123| 色欲综合视频天天天| 91香蕉视频网| 成人黄色在线网站| 久久精品视频91| 牛夜精品久久久久久久99黑人| 国产久一道中文一区| 日韩电影免费观| 久久天天躁狠狠躁夜夜av| 日本波多野结衣在线| 欧美性生活一区| 久久久久久久久久久网| 久久久国产综合精品女国产盗摄| 国产精欧美一区二区三区白种人| 亚洲国产清纯| 国产精品久久精品国产| jlzzjlzzjlzz亚洲人| 午夜精品免费在线| 久久午夜精品视频| 岛国av在线一区| wwwwxxxx日韩| 国产综合婷婷| 亚洲一区三区电影在线观看| 成人性生交大片免费看96| 国产精品流白浆视频| 视频在线观看入口黄最新永久免费国产 | 丁香婷婷综合五月| 88av.com| 亚洲精品孕妇| 8x8x华人在线| 青青草原综合久久大伊人精品 | 天天综合天天添夜夜添狠狠添| 一本久久综合| japanese在线视频| 欧美理论在线播放| 久久国产精品久久精品国产| 国产精品高清一区二区 | 国偷自产视频一区二区久| 亚洲国产精品久久艾草纯爱| 在线观看日本中文字幕| 国产一区二区美女| 三年中国国语在线播放免费| 亚洲精品乱码久久久久久蜜桃麻豆| 天堂av一区二区| 欧美日韩精品一区二区三区在线观看| 91美女片黄在线观| 久久久久久久久久久久久av| 中文字幕欧美区| 强迫凌虐淫辱の牝奴在线观看| 国产精品性做久久久久久| 午夜免费看视频| 日韩精品一级二级| 国内外成人激情视频| 极品少妇一区二区三区| 青青草免费在线视频观看| 成人免费在线播放| 日日噜噜噜噜夜夜爽亚洲精品| 欧美电影完整版在线观看| 国产精品久久一区二区三区| 日韩中文字幕视频网| 91人人爽人人爽人人精88v| jizz久久久久久| 国产精品国产福利国产秒拍| 中国色在线日|韩| 97色伦亚洲国产| 国产传媒av在线| 性欧美xxxx| 天堂av在线网| 欧美一区二区三区精品电影| 成年人在线网站| 欧美一级淫片videoshd| 亚洲欧美小说色综合小说一区| 欧美一级大片视频| 欧美xxx网站| 国产suv精品一区二区| 欧美二三四区| 国产精品一区二区三区久久| 91大神在线观看线路一区| 国产精品免费观看在线| 精品国产欧美日韩一区二区三区| 国产精品老女人视频| 亚洲一区av| 国产精品18毛片一区二区| 日韩av影院| 日韩国产欧美一区| 日韩欧美国产精品综合嫩v| 一区二区免费在线观看| 中国成人一区| 五月丁香综合缴情六月小说| 中文日韩在线| 久久婷婷国产91天堂综合精品| 美腿丝袜在线亚洲一区| 国产人妻精品久久久久野外| 成人一区二区三区中文字幕| 无码人妻精品一区二区三应用大全| 久久久99精品久久| 成人欧美一区二区三区黑人一| 亚洲精选免费视频| 欧美特黄aaaaaa| 欧美日韩精品免费| 开心激情综合网| 亚洲欧美日韩天堂一区二区| 免费a在线看| 68精品久久久久久欧美| 成人精品国产亚洲| 99国精产品一二二线| 免费久久精品| 久久久成人精品一区二区三区| 亚洲另类黄色| 免费一区二区三区在线观看| 不卡的av电影在线观看| 日韩不卡av在线| 亚洲一区国产视频| 中文字幕理论片| 亚洲风情亚aⅴ在线发布| 成人在线观看黄色| 久久久久久久久久久人体| 88xx成人免费观看视频库| 91日韩久久| 国产成人一区| 福利视频免费在线观看| 免费成人你懂的| 天堂www中文在线资源| 欧美国产一区二区在线观看| 国产精品theporn动漫| 欧美日韩专区在线| 午夜一区在线观看| 九色91av视频| 久久久精品一区二区毛片免费看| 国产一区二区黄色| 亚洲一级毛片| 亚洲欧美在线精品| 久久欧美中文字幕| 亚洲国产精品成人无久久精品| 欧美日韩免费不卡视频一区二区三区| 神马久久久久久久久久| 伦伦影院午夜日韩欧美限制| 免费在线成人激情电影| 久久久久久久久久久久久久一区| 一区二区三区网站 | а天堂中文在线资源| 欧美日韩国产专区| 亚洲av无码一区二区乱子伦| 视频在线一区二区| 日本精品不卡| 久久精品日韩精品| 黄色在线成人| 国产精品熟女一区二区不卡| 亚洲婷婷综合色高清在线| 精品国产www| 国产一区二区三区在线播放免费观看 | 国产精品一区二区99| 九一国产精品视频| 国产福利一区二区三区在线视频| 日韩精品一区二区三区在线视频| 欧美中文字幕一区| 成年人在线免费观看| 国产精品第2页| 精品99在线| 男人搞女人网站| 国产喷白浆一区二区三区| 欧美a视频在线观看| 亚洲美女动态图120秒| 中国色在线日|韩| 欧美日韩最好看的视频| 米奇777在线欧美播放| 国产特黄级aaaaa片免| 欧美性生交xxxxxdddd| 欧美欧美欧美| 国产精品成人aaaaa网站| 国产欧美高清视频在线| 又色又爽又高潮免费视频国产| 国产午夜精品理论片a级大结局| 国产亚洲欧美在线精品| 亚洲一区二区久久| 91精品国产经典在线观看| 性欧美大战久久久久久久免费观看| 日韩电影网1区2区| 国产三级精品三级观看| 欧美精品视频www在线观看| 免费黄色在线网站| 91国产在线免费观看| 在线免费高清一区二区三区| 中国黄色a级片| 欧美综合亚洲图片综合区| 午夜激情视频在线观看| 亚洲最大激情中文字幕| 亚洲高清自拍| 日韩中文字幕电影| 欧美影院精品一区| 男人在线资源站| 波多野结衣成人在线| 免费日韩精品中文字幕视频在线| 一区二区黄色片| 欧美日韩免费视频| av黄在线观看| 久久大香伊蕉在人线观看热2| 日韩精品欧美成人高清一区二区| 91大神福利视频| 精品久久免费看| av资源亚洲| 91九色国产ts另类人妖| 不卡影院免费观看| 久久久久亚洲视频| 欧美情侣性视频| 蜜桃一区二区| 日本55丰满熟妇厨房伦| 欧美日韩免费在线观看| 欧美精品hd| 国产综合欧美在线看| 日产欧产美韩系列久久99| 欧美色图亚洲天堂| 亚洲欧美在线第一页| 欧美不卡在线观看| 欧美私人情侣网站| 亚洲精品免费在线播放| 国产一二三在线观看| 97久草视频| 蜜臀av一区二区三区| 中文在线观看免费网站| 国产亚洲一区二区精品| 成人福利一区| 久国产精品视频| 日韩欧美综合在线视频|