日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

数据科学教程:R语言与DataFrame[2016版]

發(fā)布時(shí)間:2025/3/21 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据科学教程:R语言与DataFrame[2016版] 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
數(shù)據(jù)科學(xué)教程:R語(yǔ)言與DataFrame[2016版]
  • r
HarryZhu 2016年03月16日發(fā)布 保存 標(biāo)簽:至少1個(gè),最多5個(gè)
  • javascript
  • php
  • css
  • html
  • java
  • html5
  • python
  • node.js
  • c++
  • c
  • objective-c
  • golang
  • shell
  • swift
  • c#
  • typescript
  • ruby
  • bash
  • sass
  • asp.net
  • less
  • lua
  • scala
  • coffeescript
  • actionscript
  • erlang
  • perl
  • rust
  • laravel
  • spring
  • django
  • flask
  • express
  • yii
  • ruby-on-rails
  • tornado
  • struts
  • linux
  • nginx
  • apache
  • docker
  • ubuntu
  • centos
  • tomcat
  • 緩存
  • 負(fù)載均衡
  • unix
  • hadoop
  • windows-server
  • mysql
  • redis
  • sql
  • mongodb
  • oracle
  • nosql
  • memcached
  • sqlserver
  • sqlite
  • postgresql
  • git
  • github
  • vim
  • sublime-text
  • xcode
  • visual-studio-code
  • intellij-idea
  • eclipse
  • maven
  • svn
  • ide
  • atom
  • visual-studio
  • emacs
  • hg
  • textmate
  • android
  • ios
  • chrome
  • windows
  • iphone
  • firefox
  • internet-explorer
  • safari
  • ipad
  • opera
  • apple-watch
  • html5
  • react.js
  • 搜索引擎
  • virtualenv
  • lucene
  • 贊??|?? 4收藏??|??41
  • 8.8k 次瀏覽

什么是DataFrame

引用 r-tutor上的定義:

DataFrame 是一個(gè)表格或者類似二維數(shù)組的結(jié)構(gòu),它的各行表示一個(gè)實(shí)例,各列表示一個(gè)變量。

沒(méi)錯(cuò),DataFrame就是類似于Excel表格和MySQL數(shù)據(jù)庫(kù)一樣是一個(gè)結(jié)構(gòu)化的數(shù)據(jù)體。而這種結(jié)構(gòu)化的數(shù)據(jù)體是當(dāng)代數(shù)據(jù)流編程中的中流砥柱,幾乎所有先進(jìn)算法的載體都是DataFrame,比如現(xiàn)在我們耳熟能詳?shù)倪壿嫽貧w算法、貝葉斯算法、支持向量機(jī)算法、XGBoost算法等等都建立在這個(gè)數(shù)據(jù)流編程的基礎(chǔ)之上,我們可以在R、Python、Scala等函數(shù)式編程中找到他們的身影。

R中的DataFrame數(shù)據(jù)流編程

參考前文 [[原]基于RStudio Webinars的統(tǒng)計(jì)報(bào)告Web化與工程化實(shí)踐總結(jié)](https://segmentfault.com/a/11...、數(shù)據(jù)清洗、數(shù)據(jù)處理、數(shù)據(jù)可視化以及數(shù)據(jù)建模五個(gè)模塊。

數(shù)據(jù)讀取 readr/httr/DBI

readr

readr簡(jiǎn)化了我們讀取多種格式表格型數(shù)據(jù)的方法,包括分割文件withread_delim(),read_csv()read_tsv()、read_csv2()、固定寬度文件讀取的read_fwf()、read_table()以及read_log()來(lái)讀取Web日志文件。在參數(shù)配置方面是和原生的read.xxx()函數(shù)族是看齊的。

readr是利用C++和RCpp編寫的,所以執(zhí)行的速度是相當(dāng)快的,不過(guò)相對(duì)于直接用C語(yǔ)言寫的data.table::fread()就稍微慢大概1.2-2倍左右。在實(shí)際使用中,data.talbe::fread()的讀取速度可以比原生的read.csv有3-10倍的提升速度。

httr

httr是一個(gè)高級(jí)的網(wǎng)絡(luò)請(qǐng)求庫(kù),類似于Python中的Tornado和Requests,除了提供基本的Restful接口設(shè)計(jì)功能,比如GET(), HEAD(), PATCH(), PUT(), DELETE()POST(),還提供了OAuth的調(diào)用,比如oauth1.0_token()oauth2.0_token()。而且httr還提供了諸如session、cookie、SSL、header、proxy、timeoutd等更過(guò)高級(jí)管理功能。當(dāng)然你可以用它來(lái)做簡(jiǎn)單的爬蟲應(yīng)用,如果需要更高級(jí)的爬蟲,我們需要投入rvest的懷抱來(lái)支持諸如xpath等高級(jí)爬蟲特性。

DBI

DBI是一個(gè)為R與數(shù)據(jù)庫(kù)通訊的數(shù)據(jù)庫(kù)接口。相當(dāng)于Java里面的DAO,Python里的Torndb和Tornlite,方便多種關(guān)系型數(shù)據(jù)庫(kù)的SQL請(qǐng)求。其中最亮眼的是,R中的DataFrame和數(shù)據(jù)庫(kù)之前可以以整個(gè)數(shù)據(jù)框插入的形式插入數(shù)據(jù)而不需要再拼接SQL語(yǔ)句。

以下是一個(gè)官方文檔的示例:

library(DBI) # 創(chuàng)建一個(gè)臨時(shí)內(nèi)存的 RSQLite 數(shù)據(jù)庫(kù) con <- dbConnect(RSQLite::SQLite(), dbname = ":memory:")dbListTables(con) # 直接插入整個(gè)數(shù)據(jù)框到數(shù)據(jù)庫(kù)中 dbWriteTable(con, "mtcars", mtcars) dbListTables(con)dbListFields(con, "mtcars") dbReadTable(con, "mtcars")# 你可以獲取所有結(jié)果: res <- dbSendQuery(con, "SELECT * FROM mtcars WHERE cyl = 4") dbFetch(res) dbClearResult(res)# 或者一次取一塊 res <- dbSendQuery(con, "SELECT * FROM mtcars WHERE cyl = 4") while(!dbHasCompleted(res)){chunk <- dbFetch(res, n = 5)print(nrow(chunk)) } dbClearResult(res)dbDisconnect(con)

數(shù)據(jù)清洗 tidyr/jsonlite

tidyr

tidyr是一個(gè)數(shù)據(jù)清洗的新包,正在取代reshape2spreadsheets等包。清潔的數(shù)據(jù)在數(shù)據(jù)處理的后續(xù)流程中十分重要,比如數(shù)據(jù)變化(dplyr),可視化(ggplot2/ggvis)以及數(shù)據(jù)建模等。tidyr主要提供了一個(gè)類似Excel中數(shù)據(jù)透視表(pivot table)的功能,提供gatherspread函數(shù)將數(shù)據(jù)在長(zhǎng)格式和寬格式之間相互轉(zhuǎn)化,應(yīng)用在比如稀疏矩陣和稠密矩陣之間的轉(zhuǎn)化。此外,separateunion方法提供了數(shù)據(jù)分組拆分、合并的功能,應(yīng)用在nominal數(shù)據(jù)的轉(zhuǎn)化上。

jsonlite

類似于Python中的json庫(kù),參考前文 [[原]數(shù)據(jù)流編程教程:R語(yǔ)言與非結(jié)構(gòu)化數(shù)據(jù)共舞](https://segmentfault.com/a/11...,我們可以知道jsonlite是一個(gè)標(biāo)準(zhǔn)的json轉(zhuǎn)化庫(kù),依賴于jsonlite我們可以自由地在JSON和DataFrame之間相互轉(zhuǎn)化。

數(shù)據(jù)處理 dplyr/rlist/purrr

dplyr

dplyr包是現(xiàn)在數(shù)據(jù)流編程的核心,同時(shí)支持主流的管道操作 %>%,主要的數(shù)據(jù)處理方法包括:

  • 高級(jí)查詢操作:

select(): 按列變量選擇
filter(): 按行名稱分片
slice(): 按行索引分片
mutate(): 在原數(shù)據(jù)集最后一列追加一些數(shù)據(jù)集
summarise(): 每組聚合為一個(gè)小數(shù)量的匯總統(tǒng)計(jì),通常結(jié)合gruop_by()使用
arrange(): 按行排序

  • 關(guān)聯(lián)表查詢

inner_join(x, y): 匹配 x + y
left_join(x, y): 所有 x + 匹配 y
semi_join(x, y): 所有 x 在 y 中匹配的部分
anti_join(x, y): 所有 x 在 y 中不匹配的部分

  • 集合操作

intersect(x, y): x 和 y 的交集(按行)
union(x, y): x 和 y 的并集(按行)
setdiff(x, y): x 和 y 的補(bǔ)集 (在x中不在y中)

更多詳細(xì)操作可以參考由SupStats翻譯的 數(shù)據(jù)再加工速查表,比Python的老鼠書直觀很多。

rlist

參考前文 數(shù)據(jù)流編程教程:R語(yǔ)言與非結(jié)構(gòu)化數(shù)據(jù)共舞,我們知道,區(qū)別于dplyr包,rlist包是針對(duì)非結(jié)構(gòu)化數(shù)據(jù)處理而生的,也對(duì)以list為核心的數(shù)據(jù)結(jié)構(gòu)提供了類似DataFrame的高級(jí)查詢、管道操作等等方法。

purrr

purrr向Scala這樣的具有高級(jí)類型系統(tǒng)的函數(shù)式編程語(yǔ)言學(xué)習(xí),為data frame的操作提供更多的函數(shù)式編程方法,比如map、lambda表達(dá)式。此外,purrr引入了靜態(tài)類型,來(lái)解決原生的apply函數(shù)族類型系統(tǒng)不穩(wěn)定的情況。

我遇到過(guò)一個(gè)非常頭疼的apply函數(shù)的問(wèn)題:apply內(nèi)的表達(dá)式計(jì)算結(jié)果不一致。

# 原來(lái)表達(dá)式是這樣的,但是返回的計(jì)算結(jié)果不對(duì): # x1x2,x3都是一個(gè)含有NA值的一個(gè)10x10的矩陣 apply(x1*x2-x1*x3,1,sum,na.rm=T)

于是改成分步計(jì)算才能得到正確答案。

t1 <- apply(x1 * x2,1,sum,na.rm=T) t2 <- apply(x1 * x3,1,sum,na.rm=T) t3 <- t1 - t2

如果使用purrr包就可以很好的解決這一問(wèn)題。參考 Wisdom's Quintessence: Purrr package for R is good for performance 的例子:

library(purrr)mtcars %>%split(.$cyl) %>%map(~ lm(mpg ~ wt, data = .)) %>%map(summary) %>%map_dbl("r.squared")

具體使用可以參考Rstudio Blog:purrr 0.2.0。

數(shù)據(jù)可視化 ggplot2/ggvis

ggplot2

ggplot2 是一個(gè)增強(qiáng)的數(shù)據(jù)可視化R包,幫助我們輕松創(chuàng)建令人驚嘆的多層圖形。它的設(shè)計(jì)理念類似于PhotoShop,具體參數(shù)包含設(shè)計(jì)對(duì)象、藝術(shù)渲染、統(tǒng)計(jì)量、尺寸調(diào)整、坐標(biāo)系統(tǒng)、分片顯示、位置調(diào)整、動(dòng)畫效果等等。

更多操作可以查看ggplot2與數(shù)據(jù)可視化速查表官方文檔

實(shí)戰(zhàn)可以參考R Graphics Cookbook一書。

ggvis

ggvis是吸收了ggplot2、vega以及d3的精華,目標(biāo)旨在配合shiny打造動(dòng)態(tài)可交互的可視化組件。ggvis最明顯的區(qū)別就是在作圖時(shí)直接支持%>%的管道操作,比如:

diamonds %>% ggvis(~carat, ~price, fill=~clarity) %>% layer_points(opacity:=1/2)

ggplot2與ggvis的關(guān)系類似于plyr與dplyr的關(guān)系,都是一種演化過(guò)程。

數(shù)據(jù)建模 broom

broom

在機(jī)器學(xué)習(xí)的本質(zhì)其實(shí)就是各種姿勢(shì)的回歸,而在R中的各種回歸分析往往不會(huì)返回一個(gè)整齊的data frame 結(jié)果。比如

lmfit <- lm(mpg ~ wt, mtcars) lmfit## ## Call: ## lm(formula = mpg ~ wt, data = mtcars) ## ## Coefficients: ## (Intercept) wt ## 37.285 -5.344

這時(shí)候broom包就派上用場(chǎng)了,直接將統(tǒng)計(jì)結(jié)果轉(zhuǎn)化為data frame格式:

library(broom) tidy(lmfit)## term estimate std.error statistic p.value ## 1 (Intercept) 37.285126 1.877627 19.857575 8.241799e-19 ## 2 wt -5.344472 0.559101 -9.559044 1.293959e-10

augment()函數(shù)返回data frame格式的s其所有他參數(shù)結(jié)果

head(augment(lmfit))## .rownames mpg wt .fitted .se.fit .resid .hat .sigma .cooksd .std.resid ## 1 Mazda RX4 21.0 2.620 23.28261 0.6335798 -2.2826106 0.04326896 3.067494 1.327407e-02 -0.76616765 ## 2 Mazda RX4 Wag 21.0 2.875 21.91977 0.5714319 -0.9197704 0.03519677 3.093068 1.723963e-03 -0.30743051 ## 3 Datsun 710 22.8 2.320 24.88595 0.7359177 -2.0859521 0.05837573 3.072127 1.543937e-02 -0.70575249 ## 4 Hornet 4 Drive 21.4 3.215 20.10265 0.5384424 1.2973499 0.03125017 3.088268 3.020558e-03 0.43275114 ## 5 Hornet Sportabout 18.7 3.440 18.90014 0.5526562 -0.2001440 0.03292182 3.097722 7.599578e-05 -0.06681879 ## 6 Valiant 18.1 3.460 18.79325 0.5552829 -0.6932545 0.03323551 3.095184 9.210650e-04 -0.23148309

glance()函數(shù),返回data frame格式的部分參數(shù)結(jié)果

glance(lmfit)## r.squared adj.r.squared sigma statistic p.value df logLik ## 1 0.7528328 0.7445939 3.045882 91.37533 1.293959e-10 2 -80.01471 ## AIC BIC deviance df.residual ## 1 166.0294 170.4266 278.3219 30

DataFrame優(yōu)化

data.table

眾所周知,data.frame的幾個(gè)缺點(diǎn)有:

  • 大數(shù)據(jù)集打印緩慢
  • 內(nèi)部搜索緩慢
  • 語(yǔ)法復(fù)雜
  • 缺乏內(nèi)部的聚合操作
  • 針對(duì)這幾個(gè)問(wèn)題,data.table應(yīng)運(yùn)而生。data.table完美兼容data.frame,這意味著之前對(duì)data.frame的操作我們可以完全保留,并且支持更多方便的數(shù)據(jù)操作方法。

    data.table還參考了NoSQL中流行的Key-Value形式,引入了setkey()函數(shù),為數(shù)據(jù)框設(shè)置關(guān)鍵字索引。

    值得一提的是data.table引入了全新的索引形式,大大簡(jiǎn)化了data frame的分片形式,提供接近于原生矩陣的操作方式并直接利用C語(yǔ)言構(gòu)造底層,保證操作的速度。

    對(duì)比操作

    對(duì)比data.table 和 dplyr 的操作:

    操作data.tabledplyr
    按行分片DT[1:2,]DF[1:2,]
    按列分片DT[,1:2,with=False]DF[,1:2]
    分組summariseDT[, sum(y), by=z]DF %>% group_by(z) %>% summarise(sum(y))
    分組mutateDT[, y := cumsum(y), by=z]ans <- DF %>% group_by(z) %>% mutate(y = cumsum(y))
    篩選后分組匯總DT[x > 2, sum(y), by=z]DF %>% filter(x>2) %>% group_by(z) %>% summarise(sum(y))
    篩選后分組更新DT[x > 2, y := cumsum(y), by=z]ans <- DF %>% group_by(z) %>% mutate(y = replace(y, which(x>2), cumsum(y)))
    分組后按條件匯總DT[, if(any(x > 5L)){y[1L]-y[2L]}else{y[2L], by=z]}DF %>% group_by(z) %>% summarise(if (any(x > 5L)) y[1L]-y[2L] else y[2L])
    apply函數(shù)族
    操作data.tabledplyr
    分組擴(kuò)展各listDT[, (cols) := lapply(.SD, sum), by=z]ans <- DF %>% group_by(z) %>% mutate_each(funs(sum))
    分組匯總各listDT[, lapply(.SD, sum), by=z]DF %>% group_by(z) %>% summarise_each(funs(sum))
    分組匯總各listDT[, c(lapply(.SD, sum),lapply(.SD, mean)), by=z]DF %>% group_by(z) %>% summarise_each(funs(sum, mean))
    分組匯總各listDT[, c(.N, lapply(.SD, sum)), by=z]DF %>% group_by(z) %>% summarise_each(funs(n(), mean))
    join 操作
    setkey(DT1, x, y)操作data.tabledplyr
    一般joinDT1[DT2]left_join(DT2, DT1)
    擇列joinDT1[DT2, .(z, i.mul)]left_join(select(DT2, x,y,mul), select(DT1, x,y,z))
    聚合joinDT1[DT2, .(sum(z)*i.mul), by=.EACHI]DF1 %>% group_by(x, y) %>% summarise(z=sum(z)) %>% inner_join(DF2) %>% mutate(z = z*mul) %>% select(-mul)
    更新joinDT1[DT2, z := cumsum(z)*i.mul, by=.EACHI]join and group by + mutate
    滾動(dòng)joinDT1[DT2, roll = -Inf]/
    其他變量控制輸出DT1[DT2, mult = "first"]/
    拼接操作
    操作data.tabledplyr
    分組再分list聚合DT[, list(x[1], y[1]), by=z]DF %>% group_by(z) %>% summarise(x[1], y[1])
    分組再分list拼接DT[, list(x[1:2], y[1]), by=z]DF %>% group_by(z) %>% do(data.frame(.$x[1:2], .$y[1]))
    分組取分位數(shù)聚合DT[, quantile(x, 0.25), by=z]DF %>% group_by(z) %>% summarise(quantile(x, 0.25))
    分組取分位數(shù)拼接DT[, quantile(x, c(0.25, 0.75)), by=z]DF %>% group_by(z) %>% do(data.frame(quantile(.$x, c(0.25, 0.75))))
    分組分list聚合拼接DT[, as.list(summary(x)), by=z]DF %>% group_by(z) %>% do(data.frame(as.list(summary(.$x))))

    更多操作詳情可查看data.table速查表。

    DataFrame可視化

    DT

    DT包是謝溢輝老師的大作,為data frame數(shù)據(jù)提供了非常好的可視化功能,并且提供了篩選、分頁(yè)、排序、搜索等數(shù)據(jù)查詢操作。

    library(DT) datatable(iris)

    此外,DT包還提供了大量的UI定制的功能,對(duì)html、css和js進(jìn)行深度定制。比如:

    m = matrix(c('<b>Bold</b>', '<em>Emphasize</em>', '<a href="http://rstudio.com">RStudio</a>','<a href="#" onclick="alert(\'Hello World\');">Hello</a>' ), 2) colnames(m) = c('<span style="color:red">Column 1</span>', '<em>Column 2</em>') datatable(m) # 默認(rèn) escape = TRUE

    datatable(m, escape = FALSE)

    raw_matrix %>% DT::datatable(options = list(pageLength = 30, dom = 'tip')) %>% DT::formatStyle(columns = c("A","B")background = styleColorBar(c(0, max(raw_matrix,na.rm = TRUE)), 'steelblue'),backgroundSize = '100% 50%',backgroundRepeat = 'no-repeat',backgroundPosition = 'center')

    分布式DataFrame

    sparklyr

    sparklyr是 rstudio 公司為鏈接spark 和dataframe 編寫的一套分布式數(shù)據(jù)處理框架,用一個(gè)統(tǒng)一的跨引擎API簡(jiǎn)化了多數(shù)據(jù)源的分析操作,進(jìn)一步將data frame底層的分布式傻瓜化。

    在R中使用sparklyr::spark_apply,我們不需要修改之前任何的代碼,并且繞過(guò)Hadoop的絕對(duì)限制,就可以讓data frame格式的數(shù)據(jù),自動(dòng)獲得分布式處理的能力!

    # 創(chuàng)建 spark鏈接 管理器來(lái)運(yùn)行Spark引擎 sc <- sparklyr::spark_connect(master = "local",version = "2.2.0", method = "livy", config = sparklyr::config())# 通過(guò)SQL讀取spark數(shù)據(jù) ddf <- DBI::dbGetQuery(sc, "select * from mtcars")/*Basic Stats*/ # 返回行/列的值 ncol(ddf) nrow(ddf)# 在 DF 上進(jìn)行運(yùn)行標(biāo)準(zhǔn)匯總 summary(ddf)

    更多具體操作可以參考官方指南

    DataFrame在R、Python和Spark三者中的聯(lián)系

    操作RPythonSpark
    庫(kù)basePandasspark SQL
    讀取csvread.csv()read_csv()spark-csv
    計(jì)數(shù)nrow()pandasDF.count()sparkDF.count()
    分片head(data,5)pandasDF.head(5)sparkDF.show(5)
    推斷類型自動(dòng)推斷自動(dòng)推斷默認(rèn)為string類型
    標(biāo)準(zhǔn)差計(jì)算中的NaN處理視為NA自動(dòng)排除視為NaN
    特征工程dplyr::mutate()pandasDF['new']sparkDF.withColumn()

    DataFrame 之我見(jiàn)

  • 處理數(shù)據(jù)的第一語(yǔ)言還是 SQL語(yǔ)句,因?yàn)镾QL是DSL,這樣就對(duì)使用者沒(méi)有Python或者R的要求,也方便與DBA的維護(hù)。在R中可以使用 sqldf 通過(guò)SQL直接操作DataFrame,在Python中可以使用 pysqldf。
  • 處理數(shù)據(jù)的第二語(yǔ)言則是 tidyverse 或者 pandas,使用這樣的鏈?zhǔn)秸{(diào)用方法可以提升數(shù)據(jù)流的處理效率,規(guī)避一些原生SQL在不同數(shù)據(jù)庫(kù)中執(zhí)行情況不同或者可讀性較差的問(wèn)題。
  • 處理數(shù)據(jù)的第三語(yǔ)言則是 data.table 或者 scala,使用這樣高性能的方法可以在關(guān)鍵步驟提升數(shù)據(jù)處理效率到極致,不過(guò)會(huì)犧牲一部分維護(hù)性。
  • 總結(jié)

    以上是生活随笔為你收集整理的数据科学教程:R语言与DataFrame[2016版]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 中文字幕人成乱码熟女香港 | 国产亚洲一区二区三区 | 人人澡人人爱 | 国产剧情av引诱维修工 | 91福利片 | 毛片视频在线免费观看 | 偷拍第一页 | 国产特级视频 | 亚洲精品69 | 欧美日韩亚洲国产另类 | 91精品啪在线观看国产线免费 | 98国产视频 | 一区二区三区免费在线视频 | 日韩精品人妻中文字幕 | 日日精品| 久久国产精品波多野结衣 | 久草新 | 永久看看免费大片 | 亚洲成a | 波多野结av衣东京热无码专区 | 美女扒开尿口给男人捅 | 日日操夜夜 | 国产一区二区三区91 | 欧美天堂网站 | 夜夜嗨aⅴ一区二区三区 | 欧美xxxx性 | 日韩视频在线观看免费视频 | 中文字幕免费 | 国产精品99久久久久久久久久久久 | 亚洲一区二区中文 | 日本高清网站 | va在线播放 | 69精品久久久久久 | 久久偷看各类女兵18女厕嘘嘘 | 3d欧美精品动漫xxxx无尽 | 又黄又爽视频在线观看 | 大陆av在线播放 | 黄色av高清| 美女被变态侵犯 | 欧美大片高清 | 337p日本大胆噜噜噜鲁 | 国产伦精品一区二区三区视频我 | 精品免费国产一区二区三区 | 波多野吉衣伦理片 | 国产三区视频 | 香蕉综合视频 | 欧美午夜免费 | 在线免费观看日韩av | 免费色片网站 | 99久久久国产精品免费蜜臀 | 欧美成人一区二区在线 | 日本美女操 | 中文字幕日韩人妻在线视频 | 日韩国产激情 | 久久国产一级片 | 日韩3区 | 特黄大片又粗又大又暴 | 94av视频| 日韩综合av | 国产91在线精品 | 一区在线免费 | 久久久久久久久久福利 | 我和公激情中文字幕 | 深爱综合网| 国产三级理论 | 在线看h网站 | 日韩jizz | 日本精品一区二区在线观看 | 毛片网站在线看 | 涩涩网站在线 | 日韩二区在线观看 | 久久国产一二三 | 精品少妇一二三区 | 伊人视屏 | 四虎午夜影院 | 一区二区播放 | 91麻豆精品国产91久久久无需广告 | 国产精品热| 人妻换人妻仑乱 | 奇米婷婷 | 国产毛片久久久久久 | 人妻一区二区三区在线 | 国产一区中文字幕 | 国产亚洲色婷婷久久99精品 | 好大好爽好舒服 | 精品国产av无码一区二区三区 | 青青视频一区二区 | 一区三区在线观看 | 成人app在线 | 在线精品一区二区三区 | 打屁股无遮挡网站 | 国精品无码一区二区三区 | 琪琪色影音先锋 | 黄色aaa| 免费av免费看 | 久久久久国产精品视频 | 黄色网址在线免费看 | 亚洲精品在线视频观看 | 香蕉视频黄色片 |