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

使用Java和Python進行數據統計和分析

譯文 精選
大數據 數據分析 開發
本文將介紹如何對大量表格數據進行簡單的數據分析,并使用 Java 和 Python 計算一些統計數據。

Java 和 Python 是當今最流行的兩種計算機語言。兩者都非常成熟,并提供了工具和技術生態系統,幫助我們解決數據科學領域出現的挑戰性問題。每種語言都各有優勢,我們要知道什么時候應該使用哪種工具,或者什么時候它們應該協同工作相互補充。

Python 是一種動態類型語言,使用起來非常簡單,如果我們不想接觸復雜的程序,它肯定是進行復雜計算的首選語言。Python 提供了優秀的庫(Pandas、NumPy、Matplotlib、ScyPy、PyTorch、TensorFlow 等)來支持對數據結構或數組的邏輯、數學和科學操作。

Java 是一種非常健壯的語言,具有強類型,因此有更嚴格的語法規則,所以不易出現程序錯誤。與Python一樣,它也提供了大量的庫來處理數據結構、線性代數、機器學習和數據處理(ND4J、Mahout、Spark、Deeplearning4J 等)。

本文將介紹如何對大量表格數據進行簡單的數據分析,并使用 Java 和 Python 計算一些統計數據。我們可以看到使用各個平臺進行數據分析的不同技術,對比它們的擴展方式,以及應用并行計算來提高其性能的可行性。

提出問題

我們要對不同州的一大批城市的價格做一個簡單的分析,這里假設有一個包含此信息的 CSV 文件。閱讀文件并繼續過濾掉一些州,并將剩余的州按城市-州分組以進行一些基本統計。希望能夠找到有效執行的解決方案,并且能夠隨著輸入數據規模的增長而有良好的擴展。

數據樣本是:

城市

基本價格

實際價格

La Jose

PA 

34.17

33.19

Preachers Slough

WA

27,46

90.17

Doonan Corners

NY

92.0

162.46

Doonan Corners

NY

97.45

159.46

Castle Rock

WA

162.16

943.21

Marble Rock

IA 

97.13

391.49

Mineral

CA

99.13

289.37

Blountville

IN

92.50

557.66

Blountsville

IN 

122.50

557.66

Coe

IN

187.85

943.98

Cecilia

KY

92.85

273.61

目的是展示如何使用 Java 和 Python 解決這些類型的問題。該示例非常簡單且范圍有限,但很容易拓展到更具挑戰性的問題。

Java 的方法

首先定義一個封裝數據元素的 Java 記錄:

record InputEntry(String city, String state, double basePrice, double actualPrice) {}

記錄(record)是 JDK 14 中引入的一種新型類型聲明。它是定義提供構造函數、訪問器、equals 和哈希實現的不可變類的一種簡捷方式。

接下來,讀取 CVS 文件并將它們增加到一個列表中:

List<InputEntry> inputEntries = readRecordEntriesFromCSVFile(recordEntries.csv);

為了按城市和州對輸入的元素進行分組,將其定義:

record CityState(String city, String state) {};

使用以下類來封裝屬于一個組的所有元素的統計信息:

record StatsAggregation(StatsAccumulator basePrice, StatsAccumulator actualPrice) {}

StatsAccumulator是Guava 庫的一部分。可以將雙精度值集合添加到類中,它會計算基本統計數據,例如計數、平均值、方差或標準差。可以使用StatsAccumulator來獲取InputEntry的basePrice和actualPrice的統計數據。

現在我們已經擁有了解決問題的所有材料。Java Streams提供了一個強大的框架來實現數據操作和分析。它的聲明式編程風格,對選擇、過濾、分組和聚合的支持,簡化了數據操作和統計分析。它的框架還提供了一個強大的實現,可以處理大量的(甚至是無限的流),并通過使用并行性、懶惰性和短路操作來高效處理。所有這些特性使Java Streams成為解決這類問題的絕佳選擇。實現非常簡單:

Map<CityState, StatsAggregation> stats = inputEntries.stream().
filter(i -> !(i.state().equals("MN") || i.state().equals("CA"))).collect(
groupingBy(entry -> new CityState(entry.city(), entry.state()),
collectingAndThen(Collectors.toList(),
list -> {StatsAccumulator sac = new StatsAccumulator();
sac.addAll(list.stream().mapToDouble(InputEntry::basePrice));
StatsAccumulator sas = new StatsAccumulator();
sas.addAll(list.stream().mapToDouble(InputEntry::actualPrice));
return new StatsAggregation(sac, sas);}
)));

在代碼的第 2 行,我們使用Stream::filter. 這是一個布爾值函數,用于過濾列表中的元素。可以實現一個 lambda 表達式來刪除任何包含“MN”或“CA”狀態的元素。

然后繼續收集列表的元素并調用Collectors::groupingBy()(第 3 行),它接受兩個參數:

  • 一個分類功能,使用CityState記錄來做城市和州的分組(第3行)。
  • 下游的收集器,包含屬于同一<城州>的元素。使用Collectors::collectingAndThen(第 4 行),它采用兩個參數分兩步進行歸約:

·我們使用Collectors::toList(第 4 行),它返回一個收集器,它將屬于同一<城州>的所有元素放到一個列表中。

·隨后對這個列表進行了整理轉換。使用一個lambda函數(第5行至第9行)來定義兩個StatsAccumulator(s),在這里分別計算前一個列表中的basePrice和actualPrice元素的統計數據。最后,返回到新創建的包含這些元素的StatsAggregation記錄。

正如前文所述,使用Java Streams的優勢之一是,它提供了一種簡單的機制,可以使用多線程進行并行處理。這允許利用CPU的多核資源,同時執行多個線程。只要在流中添加一個 "parallel":

Map<CityState, StatsAggregation> stats = inputEntries.stream().parallel().

這導致流框架將元素列表細分為多個部分,并同時在單獨的線程中運行它們。隨著所有不同的線程完成它們的計算,框架將它們串行添加到生成的 Map 中。

在第4行中使用Collectors::groupingByConcurrent而不是Collectors:groupingBy。在這種情況下,框架使用并發映射,允許將來自不同線程的元素直接插入到此映射中,而不必串行組合。

有了這三種可能性,可以檢查它們如何執行之前的統計計算(不包括從 CSV 文件加載數據的時間),因為加載量從500萬條翻倍到2000萬條:


串行

平行

并行 & GroupByConcurrent

五百萬個元素

3.045 秒

1.941 秒

1.436 秒

一千萬個元素

6.405 秒

2.876 秒

2.785 秒

兩千萬個元素

8.507 秒

4.956 秒

4.537 秒

可以看到并行運行大大提高了性能;隨著負載的增加,時間幾乎減半。使用 GroupByConcurrent 還可額外獲得 10% 的收益。

最后,得到結果是微不足道的;例如,要獲得印第安納州 Blountsville 的統計數據,我們只需要:

StatsAggregation aggreg = stateAggr.get(new CityState("Blountsville ", "IN"));
System.out.println("Blountsville, IN");
System.out.println("basePrice.mean: " + aggreg.basePrice().mean());
System.out.println("basePrice.populationVariance: " + aggreg.basePrice().populationVariance());
System.out.println("basePrice.populationStandardDeviation: " + aggreg.basePrice().populationStandardDeviation());
System.out.println("actualPrice.mean: " + aggreg.basePrice().mean());
System.out.println("actualPrice.populationVariance: " + aggreg.actualPrice().populationVariance());
System.out.println("actualPrice.populationStandardDeviation: " + aggreg.actualPrice().populationStandardDeviation());

得到的結果:

Blountsville : IN
basePrice.mean: 50.302588996763795
basePrice.sampleVariance: 830.7527439246837
basePrice.sampleStandardDeviation: 28.822781682632293
basePrice.count: 309
basePrice.min: 0.56
basePrice.max: 99.59
actualPrice.mean: 508.8927831715211
actualPrice.sampleVariance: 78883.35878833274
actualPrice.sampleStandardDeviation: 280.86181440048546
actualPrice.count: 309
actualPrice.min: 0.49
actualPrice.max: 999.33

Python的方法

在 Python 中,有幾個庫可以處理數據統計和分析。其中,Pandas 庫非常適合處理大量表格數據,它提供了非常有效的過濾、分組和統計分析方法。

使用 Python 分析以前的數據:

import pandas as pd

def group_aggregations(df_group_by):
df_result = df_group_by.agg(
{'basePrice': ['count', 'min', 'max', 'mean', 'std', 'var'],
'actualPrice': ['count', 'min', 'max', 'mean', 'std', 'var']}
)
return df_result

if __name__ == '__main__':
df = pd.read_csv("recordEntries.csv")
excluded_states = ['MN', 'CA']
df_st = df.loc[~ df['state'].isin(excluded_states)]
group_by = df_st.groupby(['city', 'state'], sort=False)
aggregated_results = group_aggregations(group_by)

在主要部分,先調用pandas.read_csv()(第 11 行)將文件中用逗號分隔的值加載到 PandasDataFrame中。  

在第13行,使用~df['state'].isin(excluded_states)來得到一個Pandas系列的布爾值,使用pandas.loc()來過濾其中不包括的州(MN和CA)。

接下來,在第14行使用DataFrame.groupby()來按城市和州進行分組。結果由group_aggregations()處理,保存每個組的basePrice和actualPrice的統計數據。

在Python中打印結果是非常直接的。IN和Blountsville的結果:

print(aggregated_results.loc['Blountsville', 'IN']['basePrice'])
print(aggregated_results.loc['Blountsville', 'IN']['actualPrice'])

統計數據:

base_price:
Name: (Blountsville, IN), dtype: float64
count 309.000000
min 0.560000
max 99.590000
mean 50.302589
std 28.822782
var 830.752744
actual_price:
Name: (Blountsville, IN), dtype: float64
count 309.000000
min 0.490000
max 999.330000
mean 508.892783
std 280.861814
var 78883.358788

為了并行運行前面的代碼,我們必須記住,Python并不像Java那樣支持細粒度的鎖機制。必須解決好與全局解釋器鎖(GIL)的問題,無論你有多少個CPU多核或線程,一次只允許一個線程執行。

為了支持并發,我們必須考慮到有一個CPU 密集型進程,因此,最好的方法是使用multiprocessing。所以需要修改代碼:

from multiprocessing import Pool
import pandas as pd

def aggreg_basePrice(df_group):
ct_st, grp = df_group
return ct_st, grp.basePrice.agg(['count', 'min', 'max', 'mean', 'std', 'var'])

if __name__ == '__main__':
df = pd.read_csv("recordEntries.csv")
start = time.perf_counter()
excluded_states = ['MN', 'CA']
filtr = ~ df['state'].isin(excluded_states)
df_st = df.loc[filtr]
grouped_by_ct_st = df_st.groupby(['city', 'state'], sort=False)
with Pool() as p:
list_parallel = p.map(aggreg_basePrice, [(ct_st, grouped) for ct_st, grouped in grouped_by_ct_st])
print(f'Time elapsed parallel: {round(finish - start, 2)} sec')

和之前一樣,使用Pandas groupby()來獲得按城市和州分組的數據(第14行)。在下一行,使用多進程庫提供的Pool()來映射分組的數據,使用aggreg_basePrice來計算每組的統計數據。Pool()會對數據進行分割,并在幾個平行的獨立進程中進行統計計算。

正如下面的表格中所示,多進程比串行運行進程慢得多。因此,對于這些類型的問題,不值得使用這種方法。

可以使用另一種并發運行代碼 - Modin。Modin提供了一種無縫的方式來并行化你的代碼,當你必須處理大量的數據時是非常有用的。將導入語句從import pandas as pd改為import modin.pandas as pd,可以并行運行代碼,并利用環境中可能存在的內核集群來加速代碼的執行。

下面的表格是剛剛涉及的不同場景的運行時間(和以前一樣,不包括從CSV文件中讀取數據的時間):


串行

多進程

Modin 過程

五百萬個元素

1.94 秒

20.25 秒

6.99 秒

一千萬個元素

4.07 秒

25.1 秒

12.88 秒

兩千萬個元素

7.62 秒

36.2 秒

25.94 秒

根據表格顯示,在Python中串行運行代碼甚至比在Java中更快。然而,使用多進程會大大降低性能。使用Moding可以改善結果,使串行運行進程更有利。值得一提的是,和以前一樣,我們在計算時間時不包括從CSV文件中讀取數據的時間。

可以發現,對于 Pandas 中的 CPU 密集型進程來說,并行化代碼是沒有優勢的。從某種意義上說,這反映了 Pandas 最初的架構方式。Pandas 在串行模式下的運行速度令人印象深刻,而且即使處理大量數據也具有很好的擴展性。

需要指出的是,Python中統計數字的計算速度取決于它的執行方式。為了得到快速的計算,需要應用到統計函數。例如,做一個簡單的pandas.DataFrame.describe()來獲得統計信息,運行速度會非常慢。

Java 的 Streams 或 Python 的 Pandas 是對大量數據進行分析和統計的兩個絕佳選擇。兩者都有非常可靠的框架,以及足夠的支持,能夠實現出色的性能和可擴展性。

Java 提供了非常強大的基礎架構,非常適合處理復雜的程序流。它非常高效,可以有效地并行運行進程。適用于快速獲得結果。

Python 非常適合做數學和統計。它非常簡單,相當快,非常適合進行復雜的計算。 

譯者介紹

翟珂,51CTO社區編輯,目前在杭州從事軟件研發工作,做過電商、征信等方面的系統,享受分享知識的過程,充實自己的生活。


原文標題:??Data Statistics and Analysis With Java and Python???,作者:??Manu Barriola??


責任編輯:莫奇
相關推薦

2015-02-12 16:05:51

微信SDK

2015-02-12 15:45:05

微信SDK

2015-02-12 16:17:09

微信SDK

2011-10-14 14:24:26

Ruby

2012-03-21 09:31:51

ibmdw

2019-07-11 10:52:02

Python統計數據

2017-09-26 19:02:09

PythonInstagram數據分析

2015-02-12 16:53:22

微信SDK

2023-09-27 15:34:48

數據編程

2012-03-07 20:56:57

iPhone

2022-11-02 14:45:24

Python數據分析工具

2019-01-15 14:21:13

Python數據分析數據

2023-08-03 18:05:26

人工智能

2024-02-07 09:36:40

MySQL數據

2020-12-14 13:24:17

PandasSQL數據集

2017-07-31 09:20:52

Elastic seaKibana數據

2017-04-26 14:02:18

大數據數據分析Excel

2017-10-31 11:55:46

sklearn數據挖掘自動化

2020-06-05 14:29:07

PythonPandas數據分析

2022-03-28 14:08:02

Python數據清洗數據集
點贊
收藏

51CTO技術棧公眾號

日韩久久电影| 成av人电影在线观看| 欧美在线国产| 亚洲成人黄色在线观看| 欧美在线色图| 亚洲一级在线| 在线国产精品视频| 一起操在线视频| 亚洲一区二区久久久| 日本不卡一区在线| 密臀av在线| 91麻豆免费在线观看| 亚瑟在线精品视频| 欧美一区观看| www.激情五月| 三级在线观看一区二区| 久久亚洲欧美日韩精品专区| 日b视频在线观看| 日韩国产大片| 欧美日韩免费一区| 亚洲精品偷拍视频| 激情小视频在线| 国产高清不卡一区二区| 国产suv精品一区二区| 欧美日韩黄色网| 你懂的一区二区三区| 日韩无一区二区| 日本熟妇人妻中出| www.youjizz.com在线| 日韩一区中文字幕| 欧美二区在线| 黄色av一区二区三区| 久久99久久99精品免视看婷婷| 国产+人+亚洲| 欧美成人一区二区三区高清| 欧洲福利电影| 国产视频自拍一区| 白丝校花扒腿让我c| 四虎国产精品免费久久| 色呦呦国产精品| 日韩小视频在线播放| 手机在线免费观看av| 国产精品久久久久久妇女6080| 久久国产一区| 少妇高潮一区二区三区69| 国产经典欧美精品| 91理论片午午论夜理片久久| 中文字幕丰满人伦在线| 久久亚洲综合| 欧美自拍视频在线| 欧美bbbbbbbbbbbb精品| 亚洲一级高清| 久久久久久久亚洲精品| 一区视频免费观看| 国产精品成人a在线观看| 一本一道久久a久久精品逆3p| 国产精品无码网站| 秋霞影视一区二区三区| 亚洲精品ady| 日韩 中文字幕| 噜噜噜天天躁狠狠躁夜夜精品 | 日本少妇xxxx动漫| 国产字幕视频一区二区| 久久久免费精品视频| 久久久久久久久久久久久久免费看| 在线免费观看日本欧美爱情大片| 久久香蕉频线观| 久久99久久99精品免费看小说| 久久免费大视频| 久久久成人精品视频| 欧美做爰爽爽爽爽爽爽| 欧美网站在线| 性欧美长视频免费观看不卡| 欧美在线观看不卡| 久久性色av| 国产日韩欧美在线| 国产片在线播放| 国产成人精品免费看| 国产伦精品一区二区| 天天操天天干天天爽| www久久精品| 色视频一区二区三区| 免费大片黄在线| 一级日本不卡的影视| 99热自拍偷拍| 成人毛片免费| 日韩欧美一级二级三级| 波多野结衣影院| 欧美精品色图| 欧美激情视频一区二区三区不卡| 国产成人无码精品久久久久| 日韩中文字幕av电影| 91色琪琪电影亚洲精品久久| 好吊色一区二区三区| 91片黄在线观看| 在线视频精品一区| 国产在线精彩视频| 欧美精品视频www在线观看 | 欧美黄色一级片视频| 国产精品亲子伦av一区二区三区| 欧美一区二区三区视频在线观看 | 中文字幕欧美国产| 国产高清不卡无码视频| 成人直播视频| 欧美一级久久久| 久久久久亚洲av成人无码电影| 91精品国产调教在线观看| 97福利一区二区| 国产又黄又爽视频| 2014亚洲片线观看视频免费| 麻豆视频传媒入口| 色婷婷综合久久久中字幕精品久久| 欧美一级艳片视频免费观看| 亚洲一区二区自偷自拍| 国内精品久久久久久久影视麻豆| 国产精品久久久久久久久久三级 | 超碰超碰超碰超碰超碰| 户外露出一区二区三区| 精品电影一区二区| 日本爱爱小视频| 久久久久国产精品一区二区| 国产乱码精品一区二区三区日韩精品 | 亚洲国产欧美在线观看| 国产一区二区三区在线免费观看| 麻豆成人在线视频| 麻豆91精品视频| 欧美精品欧美精品| 草草视频在线| 精品免费国产一区二区三区四区| 国产精品18在线| 美女日韩在线中文字幕| 国产日本一区二区三区| 1区2区3区在线视频| 欧美日韩高清一区二区不卡| 欧美人妻一区二区三区| 国产精品久久久久久久免费软件 | 亚洲最大av| 国产区精品视频| 超碰免费在线| 91国偷自产一区二区三区观看 | av免费观看网址| 日韩一区在线看| 国产免费中文字幕| 91九色精品| 91久久国产精品| 国产精品实拍| 91精品国产黑色紧身裤美女| 天天做夜夜爱爱爱| 国产一区二区免费视频| 99精品久久久久久中文字幕| 免费毛片在线看片免费丝瓜视频| 欧美视频一区二区三区在线观看| 国产福利在线观看视频| 韩国欧美一区| 成人综合色站| 国产盗摄一区二区| 精品国产一区二区精华| 国产精品6666| 国产成人aaa| a天堂资源在线观看| 日本综合精品一区| 欧美另类xxx| 亚洲女同志亚洲女同女播放| 亚洲国产精品自拍| 国内精品免费视频| 99精品视频免费观看| 久久久av水蜜桃| 在线视频cao| 国产亚洲日本欧美韩国| 欧美日韩 一区二区三区| 国产婷婷色一区二区三区| 欧美男女交配视频| 欧美二区视频| 精品午夜一区二区| 免费污视频在线一区| 最近2019好看的中文字幕免费| 福利网址在线观看| 国产精品乱人伦| 日本少妇一区二区三区| 亚洲精品免费观看| 久久久久九九九| 91成人在线| 欧美理论电影在线观看| 国产精品国产高清国产| 欧美三级资源在线| 午夜激情福利网| 99久久精品国产一区| 福利在线一区二区三区| 伊人久久大香线蕉精品组织观看| 动漫一区二区在线| 日韩免费小视频| 久久国产天堂福利天堂| 国产毛片毛片毛片毛片| 亚洲视频一区二区在线观看| 精品国产人妻一区二区三区| 日韩影院精彩在线| 黄色特一级视频| 久久最新网址| 99久久国产免费免费| 在线观看v片| 久久视频在线直播| 欧美日本网站| 日韩精品一区二区三区视频播放| 九九热精品视频在线| 中文字幕一区二区在线播放| yy6080午夜| 国产主播一区二区三区| 日韩精品视频久久| 欧美激情aⅴ一区二区三区| 免费观看国产成人| 日韩一区二区三区精品视频第3页| 91精品国产色综合久久不卡98| 国产在线69| 亚洲欧美激情在线视频| 成人av一区二区三区在线观看| 欧美在线观看18| 日本一区二区不卡在线| 综合电影一区二区三区 | 影音先锋日韩有码| 欧美视频xxx| 91精品国产综合久久久久久久| 日产精品久久久| 亚洲精品欧美二区三区中文字幕| 国产男女猛烈无遮挡a片漫画| 国产传媒欧美日韩成人| 在线免费av播放| 久久青草久久| 欧美牲交a欧美牲交| 欧美精品麻豆| 亚洲黄色网址在线观看| 成人精品亚洲| 日韩理论片在线观看| 图片婷婷一区| 精品999在线观看| 第四色中文综合网| 1卡2卡3卡精品视频| 亚洲香蕉久久| 91精品国产自产在线| 日韩成人在线电影| 国产女精品视频网站免费| 成人在线不卡| 国产精品久久久久久五月尺| 欧美成人精品三级网站| 国产999精品| 91大神在线观看线路一区| 国产精品极品在线| 日韩高清在线| 国产久一一精品| 亚洲国产精选| 91精品视频在线播放| 成人亚洲精品| 亚洲自拍在线观看| 亚洲精品黑牛一区二区三区| 动漫一区二区在线| 99久久人爽人人添人人澡| 岛国一区二区三区高清视频| 国产精品极品国产中出| 久久精品99| 精品日韩免费| 影音先锋亚洲视频| 欧美成人首页| 美女日批免费视频| 视频一区视频二区中文字幕| 久久久精品麻豆| 激情综合网av| 一区二区三区四区影院| 97精品久久久久中文字幕| 亚洲av片不卡无码久久| 国产免费久久精品| 午夜国产福利视频| 一区二区三区日韩欧美| www.av麻豆| 欧美亚洲国产一区二区三区va | 国产成人免费观看视频 | 亚洲免费电影在线| 久久亚洲AV无码| 欧美色播在线播放| 国产精品午夜一区二区| 91精品国产欧美一区二区18| 亚洲精品成人电影| 亚洲欧美日韩国产中文| 免费黄色在线看| 韩国国内大量揄拍精品视频| 亚洲人免费短视频| 91精品久久久久久蜜桃| 婷婷精品在线观看| 一本—道久久a久久精品蜜桃| 韩国亚洲精品| 亚洲精品www.| 波多野结衣中文字幕一区| 欧美午夜激情影院| 一区二区三区蜜桃| 一级久久久久久| 精品国内二区三区| av在线播放网| 欧美黄色三级网站| 欧美日韩五区| 韩国精品一区二区三区六区色诱| 欧美影院三区| 欧美亚洲国产成人| 国产一区久久久| 色无极影院亚洲| 亚洲一区二区三区在线看| 中文字幕一区二区三区免费看| 亚洲精品一区二区三区精华液| seseavlu视频在线| 91sa在线看| 亚洲三区欧美一区国产二区| 五月天国产一区| 亚洲免费影视| 蜜桃色一区二区三区| 中文字幕在线一区免费| 亚洲天堂一区在线观看| 日韩欧美色电影| 在线看黄色av| 日本视频久久久| 久久草在线视频| 国产精品8888| 狠狠v欧美v日韩v亚洲ⅴ| 麻豆91av| 日本不卡免费一区| 青青青在线播放| 成人毛片视频在线观看| fc2ppv在线播放| 欧美唯美清纯偷拍| 欧美扣逼视频| 性色av一区二区三区红粉影视| 精品91福利视频| 日日骚av一区| 日韩av首页| 国产在线播放不卡| 欧美精品尤物在线观看 | 久久高清无码视频| 666欧美在线视频| 国产手机在线视频| 欧美日韩一区二区在线视频| 嫩草精品影院| 精品国产乱码久久久久久蜜臀| 午夜免费视频在线国产| 国产精品免费一区二区三区都可以| 自拍偷拍一区| 亚洲综合在线小说| 欧美在线电影| 中文字幕第100页| 中文字幕av不卡| 黄色av电影网站| 一区二区在线观看不卡| 国产av无码专区亚洲a∨毛片| 黑人巨大精品欧美一区免费视频| 精品国产一级片| 日韩欧美国产电影| 视频国产在线观看| 7777kkkk成人观看| 欧美日韩精品一区二区三区在线观看| 国产精品久久九九| 激情五月色综合国产精品| 欧美一级黄色片视频| 亚洲毛片网站| 久久久久久国产精品日本| 久久99久久精品| 国产av自拍一区| 91久色porny| 青青草成人av| 国产亚洲精品一区二555| 2019中文字幕在线电影免费| 原创国产精品91| 亚洲最大的免费视频网站| 亚洲一区二区三区乱码| 欧美网色网址| 欧美性大战久久久久xxx| 久久久久久日产精品| 亚洲色偷偷色噜噜狠狠99网| 国产麻豆午夜三级精品| 精品中文字幕av| 亚洲五月综合| 色综合久久悠悠| 九九九久久久久久久| 欧美日韩 国产精品| 久久久久久国产三级电影| 国产毛片aaa| 亚洲妇熟xx妇色黄| 日韩av一区二区在线播放| 国产精品久久免费看| www日本视频| 57pao精品| 水蜜桃久久夜色精品一区| 亚洲精品久久一区二区三区777| 精品久久久久久久久久国产| xxxxx日韩| 动漫美女被爆操久久久| 青青草国产精品97视觉盛宴| 亚洲xxxx3d动漫| 日韩精品福利在线| 九九热这里有精品| 蜜臀av无码一区二区三区| 国产精品日韩精品欧美在线| 性生活视频软件| 国产精品偷伦免费视频观看的| 好吊日精品视频| 女人18毛片毛片毛片毛片区二|