日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Python数据分析工具Pandas——数值计算和统计基础

發(fā)布時(shí)間:2023/12/4 综合教程 34 生活家
生活随笔 收集整理的這篇文章主要介紹了 Python数据分析工具Pandas——数值计算和统计基础 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Pandas數(shù)值計(jì)算和統(tǒng)計(jì)基礎(chǔ)

  • 一、常用數(shù)學(xué)、統(tǒng)計(jì)方法
    • 基本參數(shù)
    • 主要數(shù)學(xué)計(jì)算方法
    • 唯一值:
    • 值計(jì)數(shù)
    • 成員資格
  • 二、文本數(shù)據(jù)處理
    • 使用.str訪問
    • 字符串常用方法
      • lower,upper,len,startswith,endswith
      • strip
      • replace
      • split、rsplit
    • 字符串索引
    • 合并 merge、join
      • merge合并
        • 參數(shù) - how
        • 參數(shù) - left_on, right_on, left_index, right_index
        • 參數(shù) - sort
      • pd.join()
  • 三、連接與修補(bǔ)
    • 連接 - concat
      • 連接方式:join,join_axes
      • 覆蓋列名
    • 修補(bǔ) - combine_first()
  • 四、去重及替換
    • 去重 .duplicated
    • 替換 .replace
  • 五、數(shù)據(jù)分組
    • 分組 - 可迭代對象
    • 其他軸上的分組
    • 通過字典或者Series分組
    • 通過函數(shù)分組
    • 分組計(jì)算函數(shù)方法
    • 多函數(shù)計(jì)算 - agg()
    • 分組轉(zhuǎn)換及一般性“拆分-應(yīng)用-合并”
      • 數(shù)據(jù)分組轉(zhuǎn)換 - transform
      • 一般化Groupby方法 - apply
  • 六、透視表及交叉表
    • 透視表 - pivot_table
    • 交叉表 - crosstab
  • 七、數(shù)據(jù)讀取
    • 讀取普通分隔數(shù)據(jù) - read_table()
    • 讀取csv數(shù)據(jù) - read_csv()
    • 讀取excel數(shù)據(jù) - read_excel()

一、常用數(shù)學(xué)、統(tǒng)計(jì)方法

基本參數(shù)

sum, mean, max, min…
axis=0 按列統(tǒng)計(jì),axis=1按行統(tǒng)計(jì)
skipna 排除缺失值, 默認(rèn)為True

import numpy as np
import pandas as pddf = pd.DataFrame({'key1':[4,5,3,np.nan,2],'key2':[1,2,np.nan,4,5],'key3':[1,2,3,'j','k']},index = ['a','b','c','d','e'])
print(df)
print(df['key1'].dtype,df['key2'].dtype,df['key3'].dtype)
print('-----')# np.nan :空值
# .mean()計(jì)算均值
# 只統(tǒng)計(jì)數(shù)字列
# 可以通過索引單獨(dú)統(tǒng)計(jì)一列
m1 = df.mean()
print(m1,type(m1))
print('單獨(dú)統(tǒng)計(jì)一列:',df['key2'].mean())
print('-----')# axis參數(shù):默認(rèn)為0,以列來計(jì)算,axis=1,以行來計(jì)算,這里就按照行來匯總了
m2 = df.mean(axis=1)
print(m2)
print('-----')# skipna參數(shù):是否忽略NaN,默認(rèn)True,如False,有NaN的列統(tǒng)計(jì)結(jié)果仍未NaN
m3 = df.mean(skipna=False)
print(m3)
print('-----')

運(yùn)行結(jié)果:

   key1  key2 key3
a   4.0   1.0    1
b   5.0   2.0    2
c   3.0   NaN    3
d   NaN   4.0    j
e   2.0   5.0    k
float64 float64 object
-----
key1    3.5
key2    3.0
dtype: float64 <class 'pandas.core.series.Series'>
單獨(dú)統(tǒng)計(jì)一列: 3.0
-----
a    2.5
b    3.5
c    3.0
d    4.0
e    3.5
dtype: float64
-----
key1   NaN
key2   NaN
dtype: float64
-----

主要數(shù)學(xué)計(jì)算方法

可用于Series和DataFrame

示例代碼:

df = pd.DataFrame({'key1':np.arange(10),'key2':np.random.rand(10)*10})
print(df)
print('-----')print(df.count(),'→ count統(tǒng)計(jì)非Na值的數(shù)量\n')
print(df.min(),'→ min統(tǒng)計(jì)最小值\n',df['key2'].max(),'→ max統(tǒng)計(jì)最大值\n')
print(df.quantile(q=0.75),'→ quantile統(tǒng)計(jì)分位數(shù),參數(shù)q(默認(rèn)0.50,即中位數(shù))確定位置\n')
print(df.sum(),'→ sum求和\n')
print(df.mean(),'→ mean求平均值\n')
print(df.median(),'→ median求算數(shù)中位數(shù),50%分位數(shù)\n')
print(df.std(),'\n',df.var(),'→ std,var分別求標(biāo)準(zhǔn)差,方差\n')
print(df.skew(),'→ skew樣本的偏度\n')
print(df.kurt(),'→ kurt樣本的峰度\n')# 累計(jì)和和累積積
df['key1_s'] = df['key1'].cumsum()
df['key2_s'] = df['key2'].cumsum()
print(df,'→ cumsum樣本的累計(jì)和\n')df['key1_p'] = df['key1'].cumprod()
df['key2_p'] = df['key2'].cumprod()
print(df,'→ cumprod樣本的累計(jì)積\n')# 會填充key1,和key2的值
print(df.cummax(),'\n',df.cummin(),'→ cummax,cummin分別求累計(jì)最大值,累計(jì)最小值\n')

運(yùn)行結(jié)果:

key1      key2
0     0  4.667989
1     1  4.336625
2     2  0.746852
3     3  9.670919
4     4  8.732045
5     5  0.013751
6     6  8.963752
7     7  0.279303
8     8  8.586821
9     9  8.899657
-----
key1    10
key2    10
dtype: int64 → count統(tǒng)計(jì)非Na值的數(shù)量key1    0.000000
key2    0.013751
dtype: float64 → min統(tǒng)計(jì)最小值9.67091932107 → max統(tǒng)計(jì)最大值key1    6.750000
key2    8.857754
dtype: float64 → quantile統(tǒng)計(jì)分位數(shù),參數(shù)q(默認(rèn)0.50,即中位數(shù))確定位置key1    45.000000
key2    54.897714
dtype: float64 → sum求和key1    4.500000
key2    5.489771
dtype: float64 → mean求平均值key1    4.500000
key2    6.627405
dtype: float64 → median求算數(shù)中位數(shù),50%分位數(shù)key1    3.027650
key2    3.984945
dtype: float64 key1     9.166667
key2    15.879783
dtype: float64 → std,var分別求標(biāo)準(zhǔn)差,方差key1    0.000000
key2   -0.430166
dtype: float64 → skew樣本的偏度key1   -1.200000
key2   -1.800296
dtype: float64 → kurt樣本的峰度# 累計(jì)和key1      key2  key1_s     key2_s
0     0  4.667989       0   4.667989
1     1  4.336625       1   9.004614
2     2  0.746852       3   9.751466
3     3  9.670919       6  19.422386
4     4  8.732045      10  28.154431
5     5  0.013751      15  28.168182
6     6  8.963752      21  37.131934
7     7  0.279303      28  37.411236
8     8  8.586821      36  45.998057
9     9  8.899657      45  54.897714 → cumsum樣本的累計(jì)和key1      key2  key1_s     key2_s  key1_p       key2_p
0     0  4.667989       0   4.667989       0     4.667989
1     1  4.336625       1   9.004614       0    20.243318
2     2  0.746852       3   9.751466       0    15.118767
3     3  9.670919       6  19.422386       0   146.212377
4     4  8.732045      10  28.154431       0  1276.733069
5     5  0.013751      15  28.168182       0    17.556729
6     6  8.963752      21  37.131934       0   157.374157
7     7  0.279303      28  37.411236       0    43.955024
8     8  8.586821      36  45.998057       0   377.433921
9     9  8.899657      45  54.897714       0  3359.032396 → cumprod樣本的累計(jì)積key1      key2  key1_s     key2_s  key1_p       key2_p
0   0.0  4.667989     0.0   4.667989     0.0     4.667989
1   1.0  4.667989     1.0   9.004614     0.0    20.243318
2   2.0  4.667989     3.0   9.751466     0.0    20.243318
3   3.0  9.670919     6.0  19.422386     0.0   146.212377
4   4.0  9.670919    10.0  28.154431     0.0  1276.733069
5   5.0  9.670919    15.0  28.168182     0.0  1276.733069
6   6.0  9.670919    21.0  37.131934     0.0  1276.733069
7   7.0  9.670919    28.0  37.411236     0.0  1276.733069
8   8.0  9.670919    36.0  45.998057     0.0  1276.733069
9   9.0  9.670919    45.0  54.897714     0.0  3359.032396 key1      key2  key1_s    key2_s  key1_p    key2_p
0   0.0  4.667989     0.0  4.667989     0.0  4.667989
1   0.0  4.336625     0.0  4.667989     0.0  4.667989
2   0.0  0.746852     0.0  4.667989     0.0  4.667989
3   0.0  0.746852     0.0  4.667989     0.0  4.667989
4   0.0  0.746852     0.0  4.667989     0.0  4.667989
5   0.0  0.013751     0.0  4.667989     0.0  4.667989
6   0.0  0.013751     0.0  4.667989     0.0  4.667989
7   0.0  0.013751     0.0  4.667989     0.0  4.667989
8   0.0  0.013751     0.0  4.667989     0.0  4.667989
9   0.0  0.013751     0.0  4.667989     0.0  4.667989 → cummax,cummin分別求累計(jì)最大值,累計(jì)最小值

唯一值:

唯一值:.unique()

示例代碼:

s = pd.Series(list('asdvasdcfgg'))# 得到一個(gè)唯一值數(shù)組
sq = s.unique()
print(s)
print(sq,type(sq))
print(pd.Series(sq))  # 通過pd.Series重新變成新的Series# 重新排序
sq.sort()
print(sq)

運(yùn)行結(jié)果:

0     a
1     s
2     d
3     v
4     a
5     s
6     d
7     c
8     f
9     g
10    g
dtype: object
['a' 's' 'd' 'v' 'c' 'f' 'g'] <class 'numpy.ndarray'>
0    a
1    s
2    d
3    v
4    c
5    f
6    g
dtype: object
['a' 'c' 'd' 'f' 'g' 's' 'v']

值計(jì)數(shù)

值計(jì)數(shù):.value_counts()

示例代碼:

s = pd.Series(list('asdvasdcfgg'))
c = s.value_counts(sort = False)  # 也可以這樣寫:pd.value_counts(sc, sort = False)# 得到一個(gè)新的Series,計(jì)算出不同值出現(xiàn)的頻率
# sort參數(shù):排序,默認(rèn)為True
print(sc)

運(yùn)行結(jié)果:

s    2
d    2
v    1
c    1
a    2
g    2
f    1
dtype: int64

成員資格

成員資格:.isin()

示例代碼:

s = pd.Series(np.arange(10,15))
df = pd.DataFrame({'key1':list('asdcbvasd'),'key2':np.arange(4,13)})
print(s)
print(df)
print('-----')# 用[]表示
# 得到一個(gè)布爾值的Series或者Dataframe
print(s.isin([5, 14]))
print(df.isin(['a', 'bc', '10', 8]))

運(yùn)行結(jié)果:

0    10
1    11
2    12
3    13
4    14
dtype: int32key1  key2
0    a     4
1    s     5
2    d     6
3    c     7
4    b     8
5    v     9
6    a    10
7    s    11
8    d    12
-----
0    False
1    False
2    False
3    False
4     True
dtype: boolkey1   key2
0   True  False
1  False  False
2  False  False
3  False  False
4  False   True
5  False  False
6   True  False
7  False  False
8  False  False

二、文本數(shù)據(jù)處理

Pandas針對字符串配備的一套方法,使其易于對數(shù)組的每個(gè)元素進(jìn)行操作

使用.str訪問

通過str訪問,且自動排除丟失NAN值

示例代碼:

s = pd.Series(['A','b','C','bbhello','123',np.nan,'hj'])
df = pd.DataFrame({'key1':list('abcdef'),'key2':['hee','fv','w','hija','123',np.nan]})
print(s)
print(df)
print('-----')# 直接通過.str調(diào)用字符串方法
# 可以對Series、Dataframe使用
# 自動過濾NaN值
print(s.str.count('b'))
print(df['key2'].str.upper())
print('-----')# df.columns是一個(gè)Index對象,也可使用.str
df.columns = df.columns.str.upper()
print(df)

運(yùn)行結(jié)果:

0          A
1          b
2          C
3    bbhello
4        123
5        NaN
6         hj
dtype: objectkey1  key2
0    a   hee
1    b    fv
2    c     w
3    d  hija
4    e   123
5    f   NaN
-----
0    0.0
1    1.0
2    0.0
3    2.0
4    0.0
5    NaN
6    0.0
dtype: float64
0     HEE
1      FV
2       W
3    HIJA
4     123
5     NaN
Name: key2, dtype: object
-----KEY1  KEY2
0    a   hee
1    b    fv
2    c     w
3    d  hija
4    e   123
5    f   NaN

字符串常用方法

lower,upper,len,startswith,endswith

示例代碼:

s = pd.Series(['A','b','bbhello','123',np.nan])print(s.str.lower(),'→ lower小寫\n')
print(s.str.upper(),'→ upper大寫\n')
print(s.str.len(),'→ len字符長度\n')
print(s.str.startswith('b'),'→ 判斷起始是否為a\n')
print(s.str.endswith('3'),'→ 判斷結(jié)束是否為3\n')

運(yùn)行結(jié)果:

0          a
1          b
2    bbhello
3        123
4        NaN
dtype: object → lower小寫0          A
1          B
2    BBHELLO
3        123
4        NaN
dtype: object → upper大寫0    1.0
1    1.0
2    7.0
3    3.0
4    NaN
dtype: float64 → len字符長度0    False
1     True
2     True
3    False
4      NaN
dtype: object → 判斷起始是否為a0    False
1    False
2    False
3     True
4      NaN
dtype: object → 判斷結(jié)束是否為3

strip

strip

示例代碼:

s = pd.Series([' jack', 'jill ', ' jesse ', 'frank'])
df = pd.DataFrame(np.random.randn(3, 2), columns=[' Column A ', ' Column B '],index=range(3))
print(s)
print(df)
print('-----')print(s.str.strip())  # 去除字符串中的空格
print(s.str.lstrip())  # 去除字符串中的左空格
print(s.str.rstrip())  # 去除字符串中的右空格# 這里去掉了columns的前后空格,但沒有去掉中間空格
df.columns = df.columns.str.strip()
print(df)

運(yùn)行結(jié)果:

0       jack
1      jill 
2     jesse 
3      frank
dtype: objectColumn A    Column B 
0    0.647766    0.094747
1    0.342940   -0.660643
2    1.183315   -0.143729
-----
0     jack
1     jill
2    jesse
3    frank
dtype: object
0      jack
1     jill 
2    jesse 
3     frank
dtype: object
0      jack
1      jill
2     jesse
3     frank
dtype: objectColumn A  Column B
0  0.647766  0.094747
1  0.342940 -0.660643
2  1.183315 -0.143729

replace

示例代碼:

df = pd.DataFrame(np.random.randn(3, 2), columns=[' Column A ', ' Column B '],index=range(3))
# 替換
df.columns = df.columns.str.replace(' ','-')
print(df)# n:替換個(gè)數(shù)
df.columns = df.columns.str.replace('-','hehe',n=1)
print(df)

運(yùn)行結(jié)果:

   -Column-A-  -Column-B-
0    1.855227   -0.519479
1   -0.400376   -0.421383
2   -0.293797   -0.432481heheColumn-A-  heheColumn-B-
0       1.855227      -0.519479
1      -0.400376      -0.421383
2      -0.293797      -0.432481

split、rsplit

示例代碼:

s = pd.Series(['a,b,c','1,2,3',['a,,,c'],np.nan])# 類似字符串的split
print(s.str.split(','))
print('-----')# 直接索引得到一個(gè)list
print(s.str.split(',')[0])
print('-----')# 可以使用get或[]符號訪問拆分列表中的元素
print(s.str.split(',').str[0])
print(s.str.split(',').str.get(1))
print('-----')# 可以使用expand可以輕松擴(kuò)展此操作以返回DataFrame
# n參數(shù)限制分割數(shù)
# rsplit類似于split,反向工作,即從字符串的末尾到字符串的開頭
print(s.str.split(',', expand=True))
print(s.str.split(',', expand=True, n = 1))
print(s.str.rsplit(',', expand=True, n = 1))
print('-----')# Dataframe使用split
df = pd.DataFrame({'key1':['a,b,c','1,2,3',[':,., ']],'key2':['a-b-c','1-2-3',[':-.- ']]})
print(df['key2'].str.split('-'))

運(yùn)行結(jié)果:

0    [a, b, c]
1    [1, 2, 3]
2          NaN
3          NaN
dtype: object
-----
['a', 'b', 'c']
-----
0      a
1      1
2    NaN
3    NaN
dtype: object
0      b
1      2
2    NaN
3    NaN
dtype: object
-----0     1     2
0    a     b     c
1    1     2     3
2  NaN  None  None
3  NaN  None  None0     1
0    a   b,c
1    1   2,3
2  NaN  None
3  NaN  None0     1
0  a,b     c
1  1,2     3
2  NaN  None
3  NaN  None
-----
0    [a, b, c]
1    [1, 2, 3]
2          NaN
Name: key2, dtype: object

字符串索引

``

示例代碼:

# 字符串索引
s = pd.Series(['A','b','C','bbhello','123',np.nan,'hj'])
df = pd.DataFrame({'key1':list('abcdef'),'key2':['hee','fv','w','hija','123',np.nan]})print(s.str[0])  # 取第一個(gè)字符串
print(s.str[:2])  # 取前兩個(gè)字符串
print(df['key2'].str[0]) 
# str之后和字符串本身索引方式相同

運(yùn)行結(jié)果:

0      A
1      b
2      C
3      b
4      1
5    NaN
6      h
dtype: object
0      A
1      b
2      C
3     bb
4     12
5    NaN
6     hj
dtype: object
0      h
1      f
2      w
3      h
4      1
5    NaN
Name: key2, dtype: object

合并 merge、join

Pandas具有全功能的,高性能內(nèi)存中連接操作,與SQL等關(guān)系數(shù)據(jù)庫非常相似

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=('_x', '_y'), copy=True, indicator=False)

merge合并

類似excel的vlookup

示例代碼:

df1 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],'A': ['A0', 'A1', 'A2', 'A3'],'B': ['B0', 'B1', 'B2', 'B3']})
df2 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],'C': ['C0', 'C1', 'C2', 'C3'],'D': ['D0', 'D1', 'D2', 'D3']})
df3 = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],'key2': ['K0', 'K1', 'K0', 'K1'],'A': ['A0', 'A1', 'A2', 'A3'],'B': ['B0', 'B1', 'B2', 'B3']})
df4 = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],'key2': ['K0', 'K0', 'K0', 'K0'],'C': ['C0', 'C1', 'C2', 'C3'],'D': ['D0', 'D1', 'D2', 'D3']})# left:第一個(gè)df
# right:第二個(gè)df
# on:參考鍵
print(pd.merge(df1, df2, on='key'))
print('------')# 多個(gè)鏈接鍵
print(pd.merge(df3, df4, on=['key1','key2']))

運(yùn)行結(jié)果:

    A   B key   C   D
0  A0  B0  K0  C0  D0
1  A1  B1  K1  C1  D1
2  A2  B2  K2  C2  D2
3  A3  B3  K3  C3  D3
------A   B key1 key2   C   D
0  A0  B0   K0   K0  C0  D0
1  A2  B2   K1   K0  C1  D1
2  A2  B2   K1   K0  C2  D2

參數(shù) - how

示例代碼:

#  → 合并方式print(pd.merge(df3, df4,on=['key1','key2'], how = 'inner'))  
print('------')
# inner:默認(rèn),取交集print(pd.merge(df3, df4, on=['key1','key2'], how = 'outer'))  
print('------')
# outer:取并集,數(shù)據(jù)缺失范圍NaNprint(pd.merge(df3, df4, on=['key1','key2'], how = 'left'))  
print('------')
# left:按照df3為參考合并,數(shù)據(jù)缺失范圍NaNprint(pd.merge(df3, df4, on=['key1','key2'], how = 'right'))  
# right:按照df4為參考合并,數(shù)據(jù)缺失范圍NaN

運(yùn)行結(jié)果:

    A   B key1 key2   C   D
0  A0  B0   K0   K0  C0  D0
1  A2  B2   K1   K0  C1  D1
2  A2  B2   K1   K0  C2  D2
------A    B key1 key2    C    D
0   A0   B0   K0   K0   C0   D0
1   A1   B1   K0   K1  NaN  NaN
2   A2   B2   K1   K0   C1   D1
3   A2   B2   K1   K0   C2   D2
4   A3   B3   K2   K1  NaN  NaN
5  NaN  NaN   K2   K0   C3   D3
------A   B key1 key2    C    D
0  A0  B0   K0   K0   C0   D0
1  A1  B1   K0   K1  NaN  NaN
2  A2  B2   K1   K0   C1   D1
3  A2  B2   K1   K0   C2   D2
4  A3  B3   K2   K1  NaN  NaN
------A    B key1 key2   C   D
0   A0   B0   K0   K0  C0  D0
1   A2   B2   K1   K0  C1  D1
2   A2   B2   K1   K0  C2  D2
3  NaN  NaN   K2   K0  C3  D3

參數(shù) - left_on, right_on, left_index, right_index

參數(shù) left_on, right_on, left_index, right_index → 當(dāng)鍵不為一個(gè)列時(shí),可以單獨(dú)設(shè)置左鍵與右鍵

示例代碼:


# df1以‘lkey’為鍵,df2以‘rkey’為鍵
df1 = pd.DataFrame({'lkey':list('bbacaab'),'data1':range(7)})
df2 = pd.DataFrame({'rkey':list('abd'),'date2':range(3)})
print(pd.merge(df1, df2, left_on='lkey', right_on='rkey'))
print('------')# df1以‘key’為鍵,df2以index為鍵
# left_index:為True時(shí),第一個(gè)df以index為鍵,默認(rèn)False
# right_index:為True時(shí),第二個(gè)df以index為鍵,默認(rèn)False
df1 = pd.DataFrame({'key':list('abcdfeg'),'data1':range(7)})
df2 = pd.DataFrame({'date2':range(100,105)},index = list('abcde'))
print(pd.merge(df1, df2, left_on='key', right_index=True))# 所以left_on, right_on, left_index, right_index可以相互組合:
# left_on + right_on, left_on + right_index, left_index + right_on, left_index + right_index

運(yùn)行結(jié)果:

   data1 lkey  date2 rkey
0      0    b      1    b
1      1    b      1    b
2      6    b      1    b
3      2    a      0    a
4      4    a      0    a
5      5    a      0    a
------data1 key  date2
0      0   a    100
1      1   b    101
2      2   c    102
3      3   d    103
5      5   e    104

參數(shù) - sort

示例代碼:

df1 = pd.DataFrame({'key':list('bbacaab'),'data1':[1,3,2,4,5,9,7]})
df2 = pd.DataFrame({'key':list('abd'),'date2':[11,2,33]})
x1 = pd.merge(df1,df2, on = 'key', how = 'outer')# sort:按照字典順序通過 連接鍵 對結(jié)果DataFrame進(jìn)行排序。默認(rèn)為False,設(shè)置為False會大幅提高性能
x2 = pd.merge(df1,df2, on = 'key', sort=True, how = 'outer')
print(x1)
print(x2)
print('------')# 也可直接用Dataframe的排序方法:sort_values,sort_index
print(x2.sort_values('data1'))

運(yùn)行結(jié)果:

   data1 key  date2
0    1.0   b    2.0
1    3.0   b    2.0
2    7.0   b    2.0
3    2.0   a   11.0
4    5.0   a   11.0
5    9.0   a   11.0
6    4.0   c    NaN
7    NaN   d   33.0data1 key  date2
0    2.0   a   11.0
1    5.0   a   11.0
2    9.0   a   11.0
3    1.0   b    2.0
4    3.0   b    2.0
5    7.0   b    2.0
6    4.0   c    NaN
7    NaN   d   33.0
------data1 key  date2
3    1.0   b    2.0
0    2.0   a   11.0
4    3.0   b    2.0
6    4.0   c    NaN
1    5.0   a   11.0
5    7.0   b    2.0
2    9.0   a   11.0
7    NaN   d   33.0

pd.join()

直接通過索引鏈接

示例代碼:

left = pd.DataFrame({'A': ['A0', 'A1', 'A2'],'B': ['B0', 'B1', 'B2']},index=['K0', 'K1', 'K2'])
right = pd.DataFrame({'C': ['C0', 'C2', 'C3'],'D': ['D0', 'D2', 'D3']},index=['K0', 'K2', 'K3'])
print(left)
print(right)
print(left.join(right))
print(left.join(right, how='outer'))  
print('-----')
# 等價(jià)于:pd.merge(left, right, left_index=True, right_index=True, how='outer')df1 = pd.DataFrame({'key':list('bbacaab'),'data1':[1,3,2,4,5,9,7]})
df2 = pd.DataFrame({'key':list('abd'),'date2':[11,2,33]})
print(df1)
print(df2)
print(pd.merge(df1, df2, left_index=True, right_index=True, suffixes=('_1', '_2')))  
# suffixes=('_x', '_y')默認(rèn)
print(df1.join(df2['date2']))
print('-----')left = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],'B': ['B0', 'B1', 'B2', 'B3'],'key': ['K0', 'K1', 'K0', 'K1']})
right = pd.DataFrame({'C': ['C0', 'C1'],'D': ['D0', 'D1']},index=['K0', 'K1'])
print(left)
print(right)
print(left.join(right, on = 'key'))
# 等價(jià)于pd.merge(left, right, left_on='key', right_index=True, how='left', sort=False);
# left的‘key’和right的index

運(yùn)行結(jié)果:

  A   B
K0  A0  B0
K1  A1  B1
K2  A2  B2C   D
K0  C0  D0
K2  C2  D2
K3  C3  D3A   B    C    D
K0  A0  B0   C0   D0
K1  A1  B1  NaN  NaN
K2  A2  B2   C2   D2A    B    C    D
K0   A0   B0   C0   D0
K1   A1   B1  NaN  NaN
K2   A2   B2   C2   D2
K3  NaN  NaN   C3   D3
-----data1 key
0      1   b
1      3   b
2      2   a
3      4   c
4      5   a
5      9   a
6      7   bdate2 key
0     11   a
1      2   b
2     33   ddata1 key_1  date2 key_2
0      1     b     11     a
1      3     b      2     b
2      2     a     33     ddata1 key  date2
0      1   b   11.0
1      3   b    2.0
2      2   a   33.0
3      4   c    NaN
4      5   a    NaN
5      9   a    NaN
6      7   b    NaN
-----A   B key
0  A0  B0  K0
1  A1  B1  K1
2  A2  B2  K0
3  A3  B3  K1C   D
K0  C0  D0
K1  C1  D1A   B key   C   D
0  A0  B0  K0  C0  D0
1  A1  B1  K1  C1  D1
2  A2  B2  K0  C0  D0
3  A3  B3  K1  C1  D1

三、連接與修補(bǔ)

連接 - 沿軸執(zhí)行連接操作

pd.concat(objs, axis=0, join=‘outer’, join_axes=None, ignore_index=False,
keys=None, levels=None, names=None, verify_integrity=False,
copy=True)

連接 - concat

示例代碼:

s1 = pd.Series([1,2,3])
s2 = pd.Series([2,3,4])
s3 = pd.Series([1,2,3],index = ['a','c','h'])
s4 = pd.Series([2,3,4],index = ['b','e','d'])# 默認(rèn)axis=0,行+行
print(pd.concat([s1,s2]))
print(pd.concat([s3,s4]).sort_index())
print('-----')# axis=1,列+列,成為一個(gè)Dataframe
print(pd.concat([s3,s4], axis=1))
print('-----')

運(yùn)行結(jié)果:

0    1
1    2
2    3
0    2
1    3
2    4
dtype: int64
a    1
b    2
c    2
d    4
e    3
h    3
dtype: int64
-----0    1
a  1.0  NaN
b  NaN  2.0
c  2.0  NaN
d  NaN  4.0
e  NaN  3.0
h  3.0  NaN
-----

連接方式:join,join_axes

示例代碼:

s5 = pd.Series([1,2,3],index = ['a','b','c'])
s6 = pd.Series([2,3,4],index = ['b','c','d'])# join:{'inner','outer'},默認(rèn)為“outer”。如何處理其他軸上的索引。outer為聯(lián)合和inner為交集。
# join_axes:指定聯(lián)合的index
print(pd.concat([s5,s6], axis= 1))
print(pd.concat([s5,s6], axis= 1, join='inner'))
print(pd.concat([s5,s6], axis= 1, join_axes=[['a','b','d']]))

運(yùn)行結(jié)果:

     0    1
a  1.0  NaN
b  2.0  2.0
c  3.0  3.0
d  NaN  4.00  1
b  2  2
c  3  30    1
a  1.0  NaN
b  2.0  2.0
d  NaN  4.0

覆蓋列名

覆蓋列名

示例代碼:

# keys:序列,默認(rèn)值無。使用傳遞的鍵作為最外層構(gòu)建層次索引
sre = pd.concat([s5,s6], keys = ['one','two'])
print(sre,type(sre))
print(sre.index)
print('-----')# axis = 1, 覆蓋列名
sre = pd.concat([s5,s6], axis=1, keys = ['one','two'])
print(sre,type(sre))

運(yùn)行結(jié)果:

one  a    1b    2c    3
two  b    2c    3d    4
dtype: int64 <class 'pandas.core.series.Series'>
MultiIndex(levels=[['one', 'two'], ['a', 'b', 'c', 'd']],labels=[[0, 0, 0, 1, 1, 1], [0, 1, 2, 1, 2, 3]])
-----one  two
a  1.0  NaN
b  2.0  2.0
c  3.0  3.0
d  NaN  4.0 <class 'pandas.core.frame.DataFrame'>

修補(bǔ) - combine_first()

示例代碼:

# 根據(jù)index,df1的空值被df2替代
# 如果df2的index多于df1,則更新到df1上,比如index=['a',1]
df1 = pd.DataFrame([[np.nan, 3., 5.], [-4.6, np.nan, np.nan],[np.nan, 7., np.nan]])
df2 = pd.DataFrame([[-42.6, np.nan, -8.2], [-5., 1.6, 4]],index=[1, 2])
print(df1)
print(df2)
print(df1.combine_first(df2))
print('-----')# update,直接df2覆蓋df1,相同index位置
df1.update(df2)
print(df1)

運(yùn)行結(jié)果:

     0    1    2
0  NaN  3.0  5.0
1 -4.6  NaN  NaN
2  NaN  7.0  NaN0    1    2
1 -42.6  NaN -8.2
2  -5.0  1.6  4.00    1    2
0  NaN  3.0  5.0
1 -4.6  NaN -8.2
2 -5.0  7.0  4.0
-----0    1    2
0   NaN  3.0  5.0
1 -42.6  NaN -8.2
2  -5.0  1.6  4.0

四、去重及替換

.duplicated / .replace

去重 .duplicated

示例代碼:

s = pd.Series([1,1,1,1,2,2,2,3,4,5,5,5,5])
# 判斷是否重復(fù)
print(s.duplicated())# 通過布爾判斷,得到不重復(fù)的值
print(s[s.duplicated() == False])
print('-----')# drop.duplicates移除重復(fù)
# inplace參數(shù):是否替換原值,默認(rèn)False
s_re = s.drop_duplicates()
print(s_re)
print('-----')df = pd.DataFrame({'key1':['a','a',3,4,5],'key2':['a','a','b','b','c']})# Dataframe中使用duplicated
print(df.duplicated())
print(df['key2'].duplicated())

運(yùn)行結(jié)果:

0     False
1      True
2      True
3      True
4     False
5      True
6      True
7     False
8     False
9     False
10     True
11     True
12     True
dtype: bool
0    1
4    2
7    3
8    4
9    5
dtype: int64
-----
0    1
4    2
7    3
8    4
9    5
dtype: int64
-----
0    False
1     True
2    False
3    False
4    False
dtype: bool
0    False
1     True
2    False
3     True
4    False
Name: key2, dtype: bool

替換 .replace

示例代碼:

s = pd.Series(list('ascaazsd'))
print(s.replace('a', np.nan))# 可一次性替換一個(gè)值或多個(gè)值
# 可傳入列表或字典
print(s.replace(['a','s'] ,np.nan))
print(s.replace({'a':'hello world!','s':123}))

運(yùn)行結(jié)果:

0    NaN
1      s
2      c
3    NaN
4    NaN
5      z
6      s
7      d
dtype: object
0    NaN
1    NaN
2      c
3    NaN
4    NaN
5      z
6    NaN
7      d
dtype: object
0    hello world!
1             123
2               c
3    hello world!
4    hello world!
5               z
6             123
7               d
dtype: object

五、數(shù)據(jù)分組

分組統(tǒng)計(jì) - groupby功能

① 根據(jù)某些條件將數(shù)據(jù)拆分成組
② 對每個(gè)組獨(dú)立應(yīng)用函數(shù)
③ 將結(jié)果合并到一個(gè)數(shù)據(jù)結(jié)構(gòu)中

Dataframe在行(axis=0)或列(axis=1)上進(jìn)行分組,將一個(gè)函數(shù)應(yīng)用到各個(gè)分組并產(chǎn)生一個(gè)新值,然后函數(shù)執(zhí)行結(jié)果被合并到最終的結(jié)果對象中。

df.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs)

示例代碼:

df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar','foo', 'bar', 'foo', 'foo'],'B' : ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],'C' : np.random.randn(8),'D' : np.random.randn(8)})
print(df)
print('------')# 直接分組得到一個(gè)groupby對象,是一個(gè)中間數(shù)據(jù),沒有進(jìn)行計(jì)算
print(df.groupby('A'), type(df.groupby('A')))
print('------')# 通過分組后的計(jì)算,得到一個(gè)新的dataframe
# 默認(rèn)axis = 0,以行來分組
# 可單個(gè)或多個(gè)([])列分組
a = df.groupby('A').mean()
b = df.groupby(['A','B']).mean()
c = df.groupby(['A'])['D'].mean()  # 以A分組,算D的平均值
print(a,type(a),'\n',a.columns)
print(b,type(b),'\n',b.columns)
print(c,type(c))

運(yùn)行結(jié)果:

<pandas.core.groupby.DataFrameGroupBy object at 0x0000000004B65E10> <class 'pandas.core.groupby.DataFrameGroupBy'>
------C         D
A                      
bar -0.815253  0.099595
foo -0.132609 -0.463918 <class 'pandas.core.frame.DataFrame'> Index(['C', 'D'], dtype='object')C         D
A   B                        
bar one   -1.272769  1.188977three -0.827655 -1.608699two   -0.345336  0.718507
foo one    0.342337 -1.021713three -0.431760 -0.123696two   -0.457979 -0.076236 <class 'pandas.core.frame.DataFrame'> Index(['C', 'D'], dtype='object')
A
bar    0.099595
foo   -0.463918
Name: D, dtype: float64 <class 'pandas.core.series.Series'>

分組 - 可迭代對象

示例代碼:

df = pd.DataFrame({'X' : ['A', 'B', 'A', 'B'], 'Y' : [1, 4, 3, 2]})
print(df)
print(df.groupby('X'), type(df.groupby('X')))
print('-----')print(list(df.groupby('X')), '→ 可迭代對象,直接生成list\n')
print(list(df.groupby('X'))[0], '→ 以元祖形式顯示\n')
for n,g in df.groupby('X'):# n是組名,g是分組后的Dataframeprint(n)print(g)print('###')
print('-----')# .get_group()提取分組后的組
print(df.groupby(['X']).get_group('A'),'\n')
print(df.groupby(['X']).get_group('B'),'\n')
print('-----')# .groups:將分組后的groups轉(zhuǎn)為dict
# 可以字典索引方法來查看groups里的元素
grouped = df.groupby(['X'])
print(grouped.groups)
print(grouped.groups['A'])  # 也可寫:df.groupby('X').groups['A']
print('-----')# .size():查看分組后的長度
sz = grouped.size()
print(sz,type(sz))
print('-----')# 按照兩個(gè)列進(jìn)行分組
df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar','foo', 'bar', 'foo', 'foo'],'B' : ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],'C' : np.random.randn(8),'D' : np.random.randn(8)})
grouped = df.groupby(['A','B']).groups
print(df)
print(grouped)
print(grouped[('foo', 'three')])

運(yùn)行結(jié)果:

 X  Y
0  A  1
1  B  4
2  A  3
3  B  2
<pandas.core.groupby.DataFrameGroupBy object at 0x00000000091B6F28> <class 'pandas.core.groupby.DataFrameGroupBy'>
-----
[('A',    X  Y
0  A  1
2  A  3), ('B',    X  Y
1  B  4
3  B  2)] → 可迭代對象,直接生成list('A',    X  Y
0  A  1
2  A  3) → 以元祖形式顯示AX  Y
0  A  1
2  A  3
###
BX  Y
1  B  4
3  B  2
###
-----X  Y
0  A  1
2  A  3 X  Y
1  B  4
3  B  2 -----
{'B': [1, 3], 'A': [0, 2]}
[0, 2]
-----
X
A    2
B    2
dtype: int64 <class 'pandas.core.series.Series'>
-----A      B         C         D
0  foo    one -0.668695  0.247781
1  bar    one -0.125374  2.259134
2  foo    two -0.112052  1.618603
3  bar  three -0.098986  0.150488
4  foo    two  0.912286 -1.260029
5  bar    two  1.096757 -0.571223
6  foo    one -0.090907 -1.671482
7  foo  three  0.088176 -0.292702
{('bar', 'two'): [5], ('foo', 'two'): [2, 4], ('bar', 'one'): [1], ('foo', 'three'): [7], ('bar', 'three'): [3], ('foo', 'one'): [0, 6]}
[7]

其他軸上的分組

示例代碼:

df = pd.DataFrame({'data1':np.random.rand(2),'data2':np.random.rand(2),'key1':['a','b'],'key2':['one','two']})
print(df)
print(df.dtypes)
print('-----')# 按照值類型分列
for n,p in df.groupby(df.dtypes, axis=1):print(n)print(p)print('##')

運(yùn)行結(jié)果:

      data1     data2 key1 key2
0  0.454580  0.692637    a  one
1  0.496928  0.214309    b  two
data1    float64
data2    float64
key1      object
key2      object
dtype: object
-----
float64data1     data2
0  0.454580  0.692637
1  0.496928  0.214309
##
objectkey1 key2
0    a  one
1    b  two
##

通過字典或者Series分組

示例代碼:

df = pd.DataFrame(np.arange(16).reshape(4,4),columns = ['a','b','c','d'])
print(df)
print('-----')# mapping中,a、b列對應(yīng)的為one,c、d列對應(yīng)的為two,以字典來分組
mapping = {'a':'one','b':'one','c':'two','d':'two','e':'three'}
by_column = df.groupby(mapping, axis = 1)
print(by_column.sum())
print('-----')# s中,index中a、b對應(yīng)的為one,c、d對應(yīng)的為two,以Series來分組
s = pd.Series(mapping)
print(s,'\n')
print(s.groupby(s).count())

運(yùn)行結(jié)果:

    a   b   c   d
0   0   1   2   3
1   4   5   6   7
2   8   9  10  11
3  12  13  14  15
-----one  two
0    1    5
1    9   13
2   17   21
3   25   29
-----
a      one
b      one
c      two
d      two
e    three
dtype: object one      2
three    1
two      2
dtype: int64

通過函數(shù)分組

示例代碼:

df = pd.DataFrame(np.arange(16).reshape(4,4),columns = ['a','b','c','d'],index = ['abc','bcd','aa','b'])
print(df,'\n')# 按照字母長度分組
print(df.groupby(len).sum())

運(yùn)行結(jié)果:

      a   b   c   d
abc   0   1   2   3
bcd   4   5   6   7
aa    8   9  10  11
b    12  13  14  15 a   b   c   d
1  12  13  14  15
2   8   9  10  11
3   4   6   8  10

分組計(jì)算函數(shù)方法

示例代碼:

s = pd.Series([1, 2, 3, 10, 20, 30], index = [1, 2, 3, 1, 2, 3])
grouped = s.groupby(level=0)  # 唯一索引用.groupby(level=0),將同一個(gè)index的分為一組
print(grouped)
print(grouped.first(),'→ first:非NaN的第一個(gè)值\n')
print(grouped.last(),'→ last:非NaN的最后一個(gè)值\n')
print(grouped.sum(),'→ sum:非NaN的和\n')
print(grouped.mean(),'→ mean:非NaN的平均值\n')
print(grouped.median(),'→ median:非NaN的算術(shù)中位數(shù)\n')
print(grouped.count(),'→ count:非NaN的值\n')
print(grouped.min(),'→ min、max:非NaN的最小值、最大值\n')
print(grouped.std(),'→ std,var:非NaN的標(biāo)準(zhǔn)差和方差\n')
print(grouped.prod(),'→ prod:非NaN的積\n')

運(yùn)行結(jié)果:

<pandas.core.groupby.SeriesGroupBy object at 0x00000000091992B0>
1    1
2    2
3    3
dtype: int64 → first:非NaN的第一個(gè)值1    10
2    20
3    30
dtype: int64 → last:非NaN的最后一個(gè)值1    11
2    22
3    33
dtype: int64 → sum:非NaN的和1     5.5
2    11.0
3    16.5
dtype: float64 → mean:非NaN的平均值1     5.5
2    11.0
3    16.5
dtype: float64 → median:非NaN的算術(shù)中位數(shù)1    2
2    2
3    2
dtype: int64 → count:非NaN的值1    1
2    2
3    3
dtype: int64 → min、max:非NaN的最小值、最大值1     6.363961
2    12.727922
3    19.091883
dtype: float64 → std,var:非NaN的標(biāo)準(zhǔn)差和方差1    10
2    40
3    90
dtype: int64 → prod:非NaN的積

多函數(shù)計(jì)算 - agg()

示例代碼:

df = pd.DataFrame({'a':[1,1,2,2],'b':np.random.rand(4),'c':np.random.rand(4),'d':np.random.rand(4),})
print(df)# 函數(shù)寫法可以用str,或者np.方法
# 可以通過list,dict傳入,當(dāng)用dict時(shí),key名為columns
print(df.groupby('a').agg(['mean',np.sum]))
print(df.groupby('a')['b'].agg({'result1':np.mean,'result2':np.sum}))

運(yùn)行結(jié)果:

   a         b         c         d
0  1  0.357911  0.318324  0.627797
1  1  0.964829  0.500017  0.570063
2  2  0.116608  0.194164  0.049509
3  2  0.933123  0.542615  0.718640b                   c                   d         mean       sum      mean       sum      mean      sum
a                                                           
1  0.661370  1.322739  0.409171  0.818341  0.598930  1.19786
2  0.524865  1.049730  0.368390  0.736780  0.384075  0.76815result2   result1
a                    
1  1.322739  0.661370
2  1.049730  0.524865

分組轉(zhuǎn)換及一般性“拆分-應(yīng)用-合并”

transform / apply

數(shù)據(jù)分組轉(zhuǎn)換 - transform

示例代碼:

# 數(shù)據(jù)分組轉(zhuǎn)換,transformdf = pd.DataFrame({'data1':np.random.rand(5),'data2':np.random.rand(5),'key1':list('aabba'),'key2':['one','two','one','two','one']})
k_mean = df.groupby('key1').mean()
print(df)
print(k_mean)
print(pd.merge(df,k_mean,left_on='key1',right_index=True).add_prefix('mean_'))  # .add_prefix('mean_'):添加前綴
print('-----')
# 通過分組、合并,得到一個(gè)包含均值的Dataframe# data1、data2每個(gè)位置元素取對應(yīng)分組列的均值
# 字符串不能進(jìn)行計(jì)算
print(df.groupby('key2').mean()) # 按照key2分組求均值
print(df.groupby('key2').transform(np.mean))

運(yùn)行結(jié)果:

   data1     data2 key1 key2
0  0.003727  0.390301    a  one
1  0.744777  0.130300    a  two
2  0.887207  0.679309    b  one
3  0.448585  0.169208    b  two
4  0.448045  0.993775    a  onedata1     data2
key1                    
a     0.398850  0.504792
b     0.667896  0.424258mean_data1_x  mean_data2_x mean_key1 mean_key2  mean_data1_y  mean_data2_y
0      0.003727      0.390301         a       one      0.398850      0.504792
1      0.744777      0.130300         a       two      0.398850      0.504792
4      0.448045      0.993775         a       one      0.398850      0.504792
2      0.887207      0.679309         b       one      0.667896      0.424258
3      0.448585      0.169208         b       two      0.667896      0.424258
-----data1     data2
key2                    
one   0.446326  0.687795
two   0.596681  0.149754data1     data2
0  0.446326  0.687795
1  0.596681  0.149754
2  0.446326  0.687795
3  0.596681  0.149754
4  0.446326  0.687795

一般化Groupby方法 - apply

示例代碼:

df = pd.DataFrame({'data1':np.random.rand(5),'data2':np.random.rand(5),'key1':list('aabba'),'key2':['one','two','one','two','one']})# apply直接運(yùn)行其中的函數(shù)
# 這里為匿名函數(shù),直接描述分組后的統(tǒng)計(jì)量
print(df.groupby('key1').apply(lambda x: x.describe()))# f_df1函數(shù):返回排序后的前n行數(shù)據(jù)
# f_df2函數(shù):返回分組后表的k1列,結(jié)果為Series,層次化索引
# 直接運(yùn)行f_df函數(shù)
# 參數(shù)直接寫在后面,也可以為.apply(f_df,n = 2))
def f_df1(d,n):return(d.sort_index()[:n])
def f_df2(d,k1):return(d[k1])
print(df.groupby('key1').apply(f_df1,2),'\n')
print(df.groupby('key1').apply(f_df2,'data2'))
print(type(df.groupby('key1').apply(f_df2,'data2')))

運(yùn)行結(jié)果:

               data1     data2
key1                          
a    count  3.000000  3.000000mean   0.561754  0.233470std    0.313439  0.337209min    0.325604  0.02690625%    0.383953  0.03890650%    0.442303  0.05090675%    0.679829  0.336753max    0.917355  0.622599
b    count  2.000000  2.000000mean   0.881906  0.547206std    0.079357  0.254051min    0.825791  0.36756425%    0.853849  0.45738550%    0.881906  0.54720675%    0.909963  0.637026max    0.938020  0.726847data1     data2 key1 key2
key1                                
a    0  0.325604  0.050906    a  one1  0.917355  0.622599    a  two
b    2  0.825791  0.726847    b  one3  0.938020  0.367564    b  two key1   
a     0    0.0509061    0.6225994    0.026906
b     2    0.7268473    0.367564
Name: data2, dtype: float64
<class 'pandas.core.series.Series'>

六、透視表及交叉表

類似excel數(shù)據(jù)透視 - pivot table / crosstab

透視表 - pivot_table

pd.pivot_table(data, values=None, index=None, columns=None, aggfunc=‘mean’, fill_value=None, margins=False, dropna=True, margins_name=‘All’)

示例代碼:

date = ['2017-5-1','2017-5-2','2017-5-3']*3
rng = pd.to_datetime(date)
df = pd.DataFrame({'date':rng,'key':list('abcdabcda'),'values':np.random.rand(9)*10})
print(df)
print('-----')# data:DataFrame對象
# values:要聚合的列或列的列表
# index:數(shù)據(jù)透視表的index,從原數(shù)據(jù)的列中篩選
# columns:數(shù)據(jù)透視表的columns,從原數(shù)據(jù)的列中篩選
# aggfunc:用于聚合的函數(shù),默認(rèn)為numpy.mean,支持numpy計(jì)算方法
print(pd.pivot_table(df, values = 'values', index = 'date', columns = 'key', aggfunc=np.sum))  # 也可以寫 aggfunc='sum'
print('-----')# 這里就分別以date、key共同做數(shù)據(jù)透視,值為values:統(tǒng)計(jì)不同(date,key)情況下values的平均值
# aggfunc=len(或者count):計(jì)數(shù)
print(pd.pivot_table(df, values = 'values', index = ['date','key'], aggfunc=len))
print('-----')

運(yùn)行結(jié)果:

 date key    values
0 2017-05-01   a  5.886424
1 2017-05-02   b  9.906472
2 2017-05-03   c  8.617297
3 2017-05-01   d  8.972318
4 2017-05-02   a  7.990905
5 2017-05-03   b  8.131856
6 2017-05-01   c  2.823731
7 2017-05-02   d  2.394605
8 2017-05-03   a  0.667917
-----
key                a         b         c         d
date                                              
2017-05-01  5.886424       NaN  2.823731  8.972318
2017-05-02  7.990905  9.906472       NaN  2.394605
2017-05-03  0.667917  8.131856  8.617297       NaN
-----
date        key
2017-05-01  a      1.0c      1.0d      1.0
2017-05-02  a      1.0b      1.0d      1.0
2017-05-03  a      1.0b      1.0c      1.0
Name: values, dtype: float64
-----

交叉表 - crosstab

默認(rèn)情況下,crosstab計(jì)算因子的頻率表,比如用于str的數(shù)據(jù)透視分析

pd.crosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, dropna=True, normalize=False)

示例代碼:

df = pd.DataFrame({'A': [1, 2, 2, 2, 2],'B': [3, 3, 4, 4, 4],'C': [1, 1, np.nan, 1, 1]})
print(df)
print('-----')# 如果crosstab只接收兩個(gè)Series,它將提供一個(gè)頻率表。
# 用A的唯一值,統(tǒng)計(jì)B唯一值的出現(xiàn)次數(shù)
print(pd.crosstab(df['A'],df['B']))
print('-----')# normalize:默認(rèn)False,將所有值除以值的總和進(jìn)行歸一化 → 為True時(shí)候顯示百分比
print(pd.crosstab(df['A'],df['B'],normalize=True))
print('-----')# values:可選,根據(jù)因子聚合的值數(shù)組
# aggfunc:可選,如果未傳遞values數(shù)組,則計(jì)算頻率表,如果傳遞數(shù)組,則按照指定計(jì)算
# 這里相當(dāng)于以A和B界定分組,計(jì)算出每組中第三個(gè)系列C的值
print(pd.crosstab(df['A'],df['B'],values=df['C'],aggfunc=np.sum))
print('-----')# margins:布爾值,默認(rèn)值False,添加行/列邊距(小計(jì))
print(pd.crosstab(df['A'],df['B'],values=df['C'],aggfunc=np.sum, margins=True))
print('-----')

運(yùn)行結(jié)果:

 A  B    C
0  1  3  1.0
1  2  3  1.0
2  2  4  NaN
3  2  4  1.0
4  2  4  1.0
-----
B  3  4
A      
1  1  0
2  1  3
-----
B    3    4
A          
1  0.2  0.0
2  0.2  0.6
-----
B    3    4
A          
1  1.0  NaN
2  1.0  2.0
-----
B      3    4  All
A                 
1    1.0  NaN  1.0
2    1.0  2.0  3.0
All  2.0  2.0  4.0
-----

七、數(shù)據(jù)讀取

核心:read_table, read_csv, read_excel

讀取普通分隔數(shù)據(jù) - read_table()

  • read_table主要用于讀取簡單的數(shù)據(jù),txt/csv

示例代碼:

import os
os.chdir('C:/Users/admin/Desktop/')# delimiter:用于拆分的字符,也可以用sep:sep = ','
# header:用做列名的序號,默認(rèn)為0(第一行)
# index_col:指定某列為行索引,否則自動索引0, 1, .....
data1 = pd.read_table('data1.txt', delimiter=',',header = 0, index_col=1)
print(data1)

運(yùn)行結(jié)果:

     va1  va3  va4
va2               
2      1    3    4
3      2    4    5
4      3    5    6
5      4    6    7

讀取csv數(shù)據(jù) - read_csv()

示例代碼:

# 讀取csv數(shù)據(jù):read_csv
# 先熟悉一下excel怎么導(dǎo)出csv# engine:使用的分析引擎。可以選擇C或者是python。C引擎快但是Python引擎功能更加完備。
# encoding:指定字符集類型,即編碼,通常指定為'utf-8'
data2 = pd.read_csv('data2.csv',engine = 'python')
print(data2.head())# 大多數(shù)情況先將excel導(dǎo)出csv,再讀取

運(yùn)行結(jié)果:

   省級政區(qū)代碼 省級政區(qū)名稱  地市級政區(qū)代碼 地市級政區(qū)名稱    年份 黨委書記姓名  出生年份  出生月份  籍貫省份代碼 籍貫省份名稱  \
0  130000    河北省   130100    石家莊市  2000    陳來立   NaN   NaN     NaN    NaN   
1  130000    河北省   130100    石家莊市  2001    吳振華   NaN   NaN     NaN    NaN   
2  130000    河北省   130100    石家莊市  2002    吳振華   NaN   NaN     NaN    NaN   
3  130000    河北省   130100    石家莊市  2003    吳振華   NaN   NaN     NaN    NaN   
4  130000    河北省   130100    石家莊市  2004    吳振華   NaN   NaN     NaN    NaN   ...    民族  教育 是否是黨校教育(是=1,否=0) 專業(yè):人文 專業(yè):社科  專業(yè):理工  專業(yè):農(nóng)科  專業(yè):醫(yī)科  入黨年份  工作年份  
0  ...   NaN  碩士              1.0   NaN   NaN    NaN    NaN    NaN   NaN   NaN  
1  ...   NaN  本科              0.0   0.0   0.0    1.0    0.0    0.0   NaN   NaN  
2  ...   NaN  本科              0.0   0.0   0.0    1.0    0.0    0.0   NaN   NaN  
3  ...   NaN  本科              0.0   0.0   0.0    1.0    0.0    0.0   NaN   NaN  
4  ...   NaN  本科              0.0   0.0   0.0    1.0    0.0    0.0   NaN   NaN  [5 rows x 23 columns]

讀取excel數(shù)據(jù) - read_excel()

示例代碼:

# 讀取excel數(shù)據(jù):read_exceldata3 = pd.read_excel('地市級黨委書記數(shù)據(jù)庫(2000-10).xlsx',sheetname='中國人民共和國地市級黨委書記數(shù)據(jù)庫(2000-10)',header=0)
print(data3)# io :文件路徑。
# sheetname:返回多表使用sheetname=[0,1],若sheetname=None是返回全表 → ① int/string 返回的是dataframe ②而none和list返回的是dict
# header:指定列名行,默認(rèn)0,即取第一行
# index_col:指定列為索引列,也可以使用u”strings”

總結(jié)

以上是生活随笔為你收集整理的Python数据分析工具Pandas——数值计算和统计基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

亚洲精品一区二区三区新线路 | 日韩欧美精品在线 | 91精品国产综合久久婷婷香蕉 | 亚洲成人免费 | 天天干天天射天天爽 | 91亚洲网 | 欧美精品在线观看免费 | 韩国在线视频一区 | 精品一区二区在线免费观看 | 五月婷婷激情六月 | 91成人观看 | 久久久久成人精品免费播放动漫 | 色资源二区在线视频 | 久久久久久久久久久国产精品 | 久久精品视频免费 | 国产黄大片在线观看 | 91成人破解版 | 在线国产一区二区 | 日韩二区三区在线 | 欧美色图88 | 国产高清黄色 | 亚洲视频 在线观看 | 国产99精品在线观看 | 丁香激情婷婷 | 欧美另类xxx | 欧美久久久影院 | 婷婷久草 | 久久久黄视频 | 91精品国自产拍天天拍 | 91av在线视频播放 | 国产涩涩在线观看 | 国产成人一区二区三区 | 美女免费视频网站 | 久香蕉 | 精品国偷自产在线 | 亚洲最新视频在线 | 日本福利视频在线 | 午夜色婷婷 | 日韩中文字幕免费 | 日韩精品免费一区二区在线观看 | 久久久久久久久毛片精品 | 亚洲一区美女视频在线观看免费 | 国产在线精品国自产拍影院 | 九九涩涩av台湾日本热热 | 国产精品毛片一区 | 国产成人av在线影院 | 久久免费视频在线观看30 | 欧美小视频在线观看 | 三日本三级少妇三级99 | 色综合小说| 五月亚洲综合 | 日日天天av | 国际精品久久久久 | 99久视频 | 久久99精品一区二区三区三区 | 欧洲不卡av| 97在线观看免费高清完整版在线观看 | 在线免费观看视频你懂的 | 五月综合在线观看 | 久久综合九色综合网站 | 91精品1区2区 | 国内精品久久久久久中文字幕 | 亚洲aⅴ在线 | 日本中文一区二区 | 永久免费看av | 欧美xxxxx在线视频 | 在线精品国产 | 国产在线视频一区二区三区 | www.五月婷婷.com | 国产一区二区三区高清播放 | 久久涩涩网站 | 人人要人人澡人人爽人人dvd | 中文字幕免费高清在线观看 | 亚洲在线资源 | 久久久久久久电影 | 国产精品免费久久久久久久久久中文 | 色亚洲激情 | 免费观看黄 | 成人午夜网址 | 国产日韩欧美在线观看 | 日韩精品在线一区 | 91在线精品视频 | 天天干干 | 婷婷色吧| 91片黄在线观看动漫 | 久久草视频 | 成人性生交视频 | 久久1电影院 | 99久久成人| 国产免费三级在线观看 | 国产污视频在线观看 | 亚洲精品美女免费 | 337p日本欧洲亚洲大胆裸体艺术 | 在线观看免费观看在线91 | 狠狠干狠狠艹 | 日韩在线观看视频在线 | 亚洲天堂精品视频在线观看 | 成人一级片免费看 | 婷婷综合视频 | 久草资源在线观看 | 午夜视频导航 | 黄污网 | 免费观看高清 | 99产精品成人啪免费网站 | 亚洲精品18日本一区app | 黄免费网站 | 国产精品久久伊人 | 国色综合 | 456成人精品影院 | 国产一区二区三区高清播放 | 天天射天天干天天 | 96精品视频 | 国产视频 亚洲视频 | 黄色免费网站大全 | 国产美腿白丝袜足在线av | 亚洲成人av片在线观看 | 天天曰天天爽 | 日韩一区二区在线免费观看 | 亚洲免费成人av电影 | 91日韩免费 | 亚洲女人天堂成人av在线 | 黄色av在| 人人插人人看 | 亚洲网站在线 | 国产1区在线观看 | 韩国av免费在线观看 | 精品一区二区在线免费观看 | 99这里有精品 | 国产精品久久久区三区天天噜 | 97精品国产97久久久久久免费 | 麻花豆传媒mv在线观看 | bbbbb女女女女女bbbbb国产 | www.日韩免费 | 日本中出在线观看 | 麻豆影视在线免费观看 | 亚洲天堂精品视频在线观看 | 国产高清精品在线 | 欧美日本一区 | 精品欧美一区二区在线观看 | 亚洲精品综合欧美二区变态 | 国产精品久久久久久a | 草久视频在线观看 | 国产精品va最新国产精品视频 | 2019天天干夜夜操 | 99国内精品久久久久久久 | 中文资源在线官网 | av福利第一导航 | 国产精品扒开做爽爽的视频 | 日韩综合精品 | 中文字幕av全部资源www中文字幕在线观看 | 久久少妇免费视频 | 亚洲欧美视频一区二区三区 | 亚洲在线视频观看 | 亚洲爱爱视频 | 免费国产在线精品 | 少妇自拍av | 中国一级特黄毛片大片久久 | 日本不卡一区二区 | 中字幕视频在线永久在线观看免费 | 精品一区二区在线观看 | 久久久久国产免费免费 | 亚洲欧美日韩在线一区二区 | 中文字幕在线观看完整版 | 久久999精品| 91视频免费看片 | 日韩精品免费一线在线观看 | 日韩艹 | 国产一区二区免费在线观看 | 国产专区一 | 一区免费视频 | 亚洲一级电影 | 国产精品一区二区三区在线 | 中文字幕在线观看的网站 | 婷婷色5月| 九九久久电影 | 色综合在| 欧美另类视频 | 日日干影院 | 久久久久国产精品视频 | 一区二区av | 丝袜美腿一区 | 看av免费网站 | 色香蕉网 | 国产手机免费视频 | 日韩午夜视频在线观看 | 久久99精品一区二区三区三区 | 日韩色高清| 久草在线免费资源 | 国产不卡视频在线 | 九九热在线观看 | 操操操干干干 | 在线看欧美 | 日韩三级中文字幕 | 亚洲综合成人专区片 | 99热精品久久 | 中文字幕免费在线看 | 国产精品成人一区二区三区吃奶 | 碰天天操天天 | 波多野结衣在线观看视频 | 日日干天天插 | 国产高清视频免费观看 | 福利网址在线观看 | 日韩激情中文字幕 | а中文在线天堂 | 欧美精品国产综合久久 | 久久视频 | 精品国自产在线观看 | 亚洲视频专区在线 | 人人澡人摸人人添学生av | 日韩系列 | 成人免费观看视频网站 | 亚洲电影一区二区 | 国产美女精品视频 | 操高跟美女 | 韩国一区二区在线观看 | 成人资源在线 | 九九热精品国产 | 日韩性xxx | 丁香在线观看完整电影视频 | 国产麻豆电影在线观看 | 96av麻豆蜜桃一区二区 | 国产精品久久久久久五月尺 | 日本三级中文字幕在线观看 | 色天天综合久久久久综合片 | 最近中文字幕完整视频高清1 | 久久久受www免费人成 | 精品亚洲va在线va天堂资源站 | 午夜精品一区二区三区可下载 | 久久电影中文字幕视频 | 在线免费视频一区 | 日韩欧美一区二区三区黑寡妇 | 欧美一级裸体视频 | 国产91免费观看 | 亚洲精品在线观看av | 在线观看视频三级 | 国产精品手机播放 | 啪啪免费试看 | 日韩欧美一区二区三区视频 | 在线激情影院一区 | 中文字幕成人网 | av综合在线观看 | 婷婷激情综合五月天 | 亚洲黄色在线播放 | 久久综合激情 | 夜夜澡人模人人添人人看 | 99精品99| 玖玖国产精品视频 | 99中文字幕视频 | 国产999视频在线观看 | 日韩在线精品视频 | 日韩av一卡二卡三卡 | 一区二区三区四区五区在线 | 久久精品老司机 | 欧美有色 | 黄色免费av | 亚洲国产精品成人女人久久 | 激情网站| 国产精品资源在线 | 日本黄色免费在线 | 粉嫩一区二区三区粉嫩91 | av免费黄色 | 五月婷婷在线视频观看 | 成人丁香花 | 婷婷综合伊人 | 又黄又刺激又爽的视频 | av黄在线播放 | 玖玖在线观看视频 | 91福利视频在线 | 亚洲精品 在线视频 | 九九热在线观看视频 | 成人黄色国产 | 一区二区三区久久 | 成人午夜av电影 | 国产又粗又硬又爽视频 | 狠狠色丁香婷婷综合橹88 | 91在线最新| 综合中文字幕 | 色婷婷www| 在线观看国产永久免费视频 | 热久久免费视频精品 | 人人爽人人澡人人添人人人人 | 日韩视频一区二区在线观看 | 成人黄色免费在线观看 | 人人爽人人爽人人片 | 久久爱992xxoo | 久久国产日韩 | 91高清一区 | 麻豆视频国产精品 | 波多野结衣综合网 | 国产专区精品视频 | 182午夜在线观看 | 久久99久久99免费视频 | 涩涩网站在线看 | 国内精品视频在线播放 | 天堂在线一区 | 伊人黄| 久久国产成人午夜av影院宅 | 日韩一级精品 | 日韩av电影中文字幕在线观看 | 91福利小视频 | 国产精品嫩草在线 | 欧美日韩二三区 | 日韩免费av在线 | 麻豆小视频在线观看 | 欧美一级免费片 | 成人久久影院 | 精品91| 国产精品美女久久久久久久网站 | 少妇bbb | 国产精品久久久久一区二区三区共 | 精品一区久久 | www.夜夜草 | 精品99999 | 国产精品久久久久永久免费看 | 欧美精品免费在线观看 | 日日干日日| 日日日天天天 | 久久老司机精品视频 | 99热在线看 | 久久免费视频这里只有精品 | 永久免费观看视频 | 在线影院av | 色97在线 | 国产盗摄精品一区二区 | 五月天天天操 | 久久久久免费精品国产小说色大师 | 夜夜操夜夜干 | 精品国产伦一区二区三区观看说明 | 国产男女爽爽爽免费视频 | 成人中文字幕av | 欧女人精69xxxxxx | 亚洲欧洲中文日韩久久av乱码 | 国产免费专区 | 天天综合天天做天天综合 | 欧美巨大 | 久久久色 | 国产区免费在线 | 一本一道久久a久久精品 | 亚洲九九 | 久草在线视频在线观看 | 99久久久国产免费 | 国产一区二区精品91 | 在线观看免费成人 | 视频在线观看入口黄最新永久免费国产 | 在线观看黄av | 天天综合网在线观看 | 看片黄网站 | 黄色影院在线观看 | 97色婷婷人人爽人人 | 91精品免费在线观看 | 免费久久久久久 | 一区二区三区四区久久 | 久久久久久中文字幕 | 91亚洲精品久久久久图片蜜桃 | 一区二区三区四区免费视频 | 亚洲精品国产精品久久99热 | 午夜精品一区二区三区在线播放 | 91av视频免费观看 | 国产毛片久久久 | 视频成人永久免费视频 | 日本中文字幕视频 | 在线观看国产麻豆 | 亚洲一区精品二人人爽久久 | 久久久免费毛片 | 探花视频免费观看高清视频 | 国产精品久久久久久av | 天天曰天天爽 | 天天操天天操天天操天天操天天操 | 中文字幕中文字幕在线中文字幕三区 | adn—256中文在线观看 | 久久久精品国产一区二区电影四季 | 国产精品理论片在线观看 | 欧洲亚洲女同hd | 国产一线二线三线性视频 | 国产精品成人在线观看 | 超碰97人人干 | 国产精品久久久视频 | 中文免费在线观看 | 欧洲av不卡 | 91精品资源| 婷婷色网址 | 中文字幕永久 | 九九热视频在线免费观看 | 麻豆传媒一区二区 | 超级碰视频 | 亚洲成人网av | 五月激情电影 | 午夜在线看 | 久久免费观看少妇a级毛片 久久久久成人免费 | 亚州欧美视频 | 99久久婷婷国产综合精品 | 亚洲国产精品va在线看黑人动漫 | 亚洲九九九 | 天天综合网久久 | 91精品久久久久久久久 | 九九热免费视频在线观看 | 婷婷深爱五月 | 欧美日韩中文在线观看 | 在线久热| 超碰人人做 | 色先锋av资源中文字幕 | 天天干 夜夜操 | 精品一区欧美 | 久久国产一二区 | 婷婷色av | 免费在线观看视频一区 | 中文字幕 在线看 | 天天操操 | 国产精品美女久久久久久网站 | 97国产视频| 久久99国产精品二区护士 | 亚洲精品国精品久久99热一 | 国产免费一区二区三区最新6 | 91试看 | 欧美日韩午夜在线 | 6080yy午夜一二三区久久 | 色香蕉网 | 精品国产一二区 | 久久一区二 | 久久久午夜精品理论片中文字幕 | 激情久久影院 | 制服丝袜亚洲 | 麻豆极品 | 国精产品永久999 | 又爽又黄又刺激的视频 | 亚洲激情网站免费观看 | 国产国产人免费人成免费视频 | 在线视频精品 | www.久久成人 | 97超碰资源站 | 亚洲日本va午夜在线电影 | 毛片网站在线观看 | 91九色精品女同系列 | 国产精品99久久久久久武松影视 | 国产精品一区二区视频 | 国产日韩三级 | 九九热精品在线 | 婷婷日韩| 亚洲精品午夜国产va久久成人 | www.伊人网 | 国产日韩精品在线观看 | 色多视频在线观看 | 日本性视频| 亚洲精品美女在线观看播放 | 91九色视频在线播放 | 四虎免费在线观看视频 | 亚洲精品网址在线观看 | 国产成人精品一区二区三区免费 | av爱干| 黄色精品一区二区 | 蜜臀久久99静品久久久久久 | 欧洲激情在线 | 国产精品久久嫩一区二区免费 | 久久观看 | 成人黄色小视频 | 国产成人区 | 国产精品一区二区你懂的 | 日韩大片在线播放 | a成人v | 国产一级片在线播放 | 亚洲精品日韩在线观看 | 1024久久| 国产精品自产拍在线观看蜜 | 国产亚洲精品久久久久久移动网络 | 国产精品美女网站 | 日本黄色特级片 | 久久婷婷一区二区三区 | 中文字幕在线观看视频一区二区三区 | 国产一级免费片 | 亚洲欧美婷婷六月色综合 | 亚洲免费黄色 | 免费亚洲成人 | 久久久久久国产精品免费 | 中文字幕精品一区二区精品 | 五月婷久久 | 日韩激情小视频 | 亚洲 欧美变态 另类 综合 | 一区二区不卡高清 | 日日婷婷夜日日天干 | 精品中文字幕视频 | 96亚洲精品久久久蜜桃 | 91精品视频免费观看 | 天天插综合 | 国内精品亚洲 | 国产一级视频免费看 | 久久久男人的天堂 | 久久99在线 | 亚洲精品综合一二三区在线观看 | 日韩精品最新在线观看 | 九九热在线播放 | 免费高清无人区完整版 | 国产免费资源 | 免费亚洲视频在线观看 | 国产黄色av影视 | 久久免费视频国产 | 日韩理论视频 | 久久久久国产精品午夜一区 | 国产精品国产三级国产aⅴ9色 | 四川bbb搡bbb爽爽视频 | 国产综合激情 | 狠狠干综合 | 91大片成人网 | 69av视频在线 | 在线视频观看你懂的 | 不卡的av在线 | 午夜成人免费影院 | 婷婷激情站| 免费高清在线观看成人 | 久草爱视频| 久久国产经典视频 | 最新国产在线视频 | 天天操天天干天天爽 | www国产亚洲精品久久网站 | 国产日本亚洲 | 久久久久久久久久久免费 | 最新日韩在线 | 91成人午夜| 国产字幕在线观看 | 看片黄网站 | 激情欧美一区二区三区 | 九九久久久| 免费在线色电影 | 91精品人成在线观看 | 黄色一级大片在线免费看国产一 | 在线精品视频免费播放 | av在线播放国产 | 99色资源 | 色婷婷www | av网站在线观看免费 | 欧美日韩在线观看一区二区三区 | 国产精品原创 | av天天在线观看 | 最新久久免费视频 | 亚洲一区日韩精品 | 国产精品99久久久精品免费观看 | 狠狠躁夜夜躁人人爽超碰91 | 国产资源av| 亚洲涩涩网站 | 亚洲精选视频在线 | 久久综合久久综合这里只有精品 | 成人国产精品一区 | 视频 天天草 | 国产福利免费在线观看 | 国产婷婷色 | 天天婷婷| 亚洲成人动漫在线观看 | 丁香六月激情婷婷 | 日本中文字幕在线播放 | 日韩视频一区二区 | 国产精品一区二区在线播放 | 日韩欧美网址 | 亚洲精品视频免费看 | 在线亚洲激情 | 91麻豆文化传媒在线观看 | 日韩a级免费视频 | 操综合 | 欧日韩在线视频 | 精品国产一区二区三区久久 | 探花视频在线版播放免费观看 | 免费毛片aaaaaa | 在线色视频小说 | 九九久久久久久久久激情 | 天天操综合网 | 九色精品免费永久在线 | 国产精品久久久久一区二区三区共 | 人人草在线视频 | 激情婷婷色 | 成人视屏免费看 | 亚洲精品国内 | 三级黄免费看 | 久久久久 免费视频 | 国产精品嫩草影院99网站 | 香蕉久久国产 | 蜜桃久久久 | 日韩精品三区四区 | 国产日韩精品一区二区在线观看播放 | 超碰在线免费福利 | 亚洲欧洲一级 | 国产欧美精品一区二区三区四区 | 日日精品 | 日韩av电影手机在线观看 | 国产精品永久免费 | 日韩精品高清不卡 | 精品国产91亚洲一区二区三区www | 免费看精品久久片 | 在线免费黄色毛片 | 国内99视频 | 国产精品久久久久一区二区三区 | 极品嫩模被强到高潮呻吟91 | 麻豆视频一区二区 | 国内少妇自拍视频一区 | 狠狠的干狠狠的操 | 久久久久久综合网天天 | 日本字幕网 | 国产h在线播放 | 欧美性护士 | 欧美日韩免费一区二区三区 | 91大神电影 | 国产精品一区二区在线观看 | 日韩xxxxxxxxx| 亚洲欧洲成人精品av97 | 日本久久成人中文字幕电影 | 福利视频网址 | 91精品视频免费看 | 天天做日日做天天爽视频免费 | 国产成人精品免高潮在线观看 | 欧美日韩国产精品一区二区亚洲 | 麻豆精品传媒视频 | 国产成人在线综合 | 狠狠狠狠干 | 九九九九九九精品 | 中文字幕2021 | 免费福利在线 | 久久精品毛片基地 | 亚洲欧洲成人精品av97 | 亚洲高清色综合 | 日韩av在线不卡 | 日韩免费在线网站 | 婷婷激情小说网 | 久久久久久片 | 国产一级二级三级在线观看 | 又黄又爽又湿又无遮挡的在线视频 | 免费高清影视 | 欧美精品v国产精品 | av大全在线 | 91在线精品秘密一区二区 | 日韩网站视频 | 成人av免费在线观看 | 免费看黄在线观看 | 亚洲涩涩色 | 又黄又爽又无遮挡的视频 | 国产高清无线码2021 | 韩日三级在线 | 欧美日本不卡高清 | 国产一区久久久 | 精品色综合| 精品久久1| 97在线观看免费高清 | 国产亚洲成av片在线观看 | 91在线日韩 | 日本视频不卡 | 国内揄拍国产精品 | 久艹视频免费观看 | 亚洲国产成人在线播放 | 91精品国产成人 | 久久综合九色综合久99 | www国产亚洲精品 | 色婷婷在线视频 | 欧美精品成人在线 | 在线视频福利 | 久久精品欧美一 | 国产精品porn | 中文在线| 国产a精品 | 久久久久久久久影院 | 国产日产欧美在线观看 | 欧美国产不卡 | 又黄又爽的免费高潮视频 | 免费观看av网站 | 2018亚洲男人天堂 | 久草电影网 | 日本高清dvd | 日本夜夜草视频网站 | 欧美成人免费在线 | 精品国偷自产在线 | 人人舔人人插 | 久久精品视频在线播放 | 98超碰人人 | 在线视频 亚洲 | 亚洲理论在线观看 | 欧美成年性 | 永久免费在线 | 免费黄色小网站 | 国产高清视频免费观看 | 99精品欧美一区二区 | 日本高清中文字幕有码在线 | 婷婷精品进入 | 天天色天天色天天色 | 国产麻豆果冻传媒在线观看 | 成人wwwxxx视频 | 在线免费观看黄色av | 91福利专区 | www.亚洲激情.com | 九九热在线精品视频 | 在线观看av大片 | 精品欧美一区二区在线观看 | 91超国产 | 一本大道久久精品懂色aⅴ 五月婷社区 | 中文永久免费观看 | 国产一二区在线观看 | 色综合久久88色综合天天 | 欧美在线一 | 在线观看aa| 亚洲自拍自偷 | 日韩欧美电影 | 丁香婷婷综合色啪 | 欧美一区二区在线 | 又爽又黄又无遮挡网站动态图 | 亚洲最新在线 | 91av在线免费看 | 激情五月综合网 | 亚洲国产电影在线观看 | 久久午夜网 | 嫩草av影院| 偷拍精偷拍精品欧洲亚洲网站 | 91精品啪啪 | 99精品欧美一区二区三区 | 97视频在线| 欧美精品一区在线 | 婷婷色综合色 | 亚洲国产精品成人女人久久 | 国产四虎影院 | 日韩精品一区二区三区水蜜桃 | 91久久国产露脸精品国产闺蜜 | 九九视频在线观看视频6 | 黄色三级在线看 | 97色免费视频 | 天天躁日日 | 午夜视频一区二区 | 国产麻豆精品在线观看 | 国产一级二级三级在线观看 | 激情综合交| 青青视频一区 | 欧美日本啪啪无遮挡网站 | av三级在线看| 久久综合久色欧美综合狠狠 | 中文字幕色婷婷在线视频 | 99成人精品 | 国产免费人人看 | 伊人色播 | 精品一区中文字幕 | 一区二区中文字幕在线观看 | 香蕉视频久久久 | 狠狠色狠狠色 | 日韩精品专区 | 日韩免费二区 | 偷拍精偷拍精品欧洲亚洲网站 | 日韩成人高清在线 | 日韩精品三区四区 | 一区二区视频电影在线观看 | 久久久久久久久久影视 | 人成电影网| 在线日本看片免费人成视久网 | 韩国在线一区 | 国产黄色片免费 | 99色亚洲| 三级av在线播放 | 91麻豆精品国产91久久久无限制版 | 久久亚洲综合国产精品99麻豆的功能介绍 | 一级淫片在线观看 | 亚洲综合激情小说 | 91原创在线观看 | 天天综合色天天综合 | 黄av资源 | 伊人射| 日韩中文字幕一区 | 天天爱av导航 | 99福利片 | 国产精品永久久久久久久久久 | 国产精品6 | 黄色大片国产 | 天天干,天天操,天天射 | 97成人资源站| 久久专区| 久久综合九色综合网站 | 波多野结衣在线观看一区 | 久久久在线免费观看 | 久色 网| 五月天激情综合 | 国产成人精品av在线观 | 亚洲一区二区三区在线看 | 免费a网站 | 国产福利一区在线观看 | 亚洲成av人影片在线观看 | 中文一区在线观看 | 五月婷婷丁香色 | 久久99精品久久只有精品 | 精品国产精品久久一区免费式 | 精品亚洲免费 | 国产在线小视频 | 亚洲麻豆精品 | 91av视频网站 | 亚洲精选在线观看 | 欧美一区二视频在线免费观看 | 91亚洲国产成人久久精品网站 | 最近日本韩国中文字幕 | 97视频资源 | 97福利在线观看 | 在线观看中文字幕2021 | 色综合久久88色综合天天6 | 亚洲日本一区二区在线 | 手机av观看 | 欧美激情另类文学 | 免费观看的av| 日韩在线欧美在线 | 男女激情麻豆 | 久久久久国产一区二区三区四区 | 天天玩天天操天天射 | 久久黄色免费视频 | 日韩视频在线观看免费 | 国产一区二区三区免费在线 | 成人看片 | 99在线观看视频网站 | 日韩久久在线 | 精精国产xxxx视频在线播放 | 91黄视频在线 | 91视频在线网址 | 天天色天天 | 久久久麻豆视频 | 国产精品美女免费看 | 国产成人99久久亚洲综合精品 | 91av社区 | 麻豆国产精品一区二区三区 | 国产一及片 | 99re亚洲国产精品 | 日韩精品亚洲专区在线观看 | 91九色在线视频 | 日批视频在线播放 | 丁香六月天婷婷 | 日本久久久久久 | 五月天色站 | 色99色| 欧美激情精品久久久久 | 四虎在线免费视频 | 天天综合色网 | 国产美女精品在线 | 麻豆视频国产 | 人人澡人人添人人爽一区二区 | 国产日产精品一区二区三区四区 | 亚洲自拍偷拍色图 | 新版资源中文在线观看 | 摸阴视频 | 日韩精品三区四区 | 9797在线看片亚洲精品 | 亚欧洲精品视频在线观看 | 精品久久综合 | 麻豆久久一区二区 | 国产精品久久久久aaaa九色 | 中文字幕三区 | 开心婷婷色 | 天天操人 | 91精品久久久久久久久久久久久 | 国产成人三级在线播放 | 国产偷在线 | 色香网| 久久精品中文字幕少妇 | 久久福利影视 | 亚洲一区 av | 天堂av免费看 | 精品亚洲午夜久久久久91 | 精品久久九九 | 亚州国产视频 | 99免费在线视频观看 | 国产精品99久久久久久有的能看 | 天天射天天干天天操 | 久久精品视频中文字幕 | 午夜视频免费在线观看 | 久久草精品| 色91av| 1024久久| 欧美精品在线观看一区 | 成人9ⅰ免费影视网站 | 久久人人做 | 国产精品久久久久久久妇 | 麻豆久久一区二区 | 免费在线观看一区 | 国产精品6 | 国产成人一区三区 | 日韩电影在线视频 | 日韩成人邪恶影片 | 在线观看一级 | 天天干天天摸天天操 | 日韩精品一卡 | 精品国产_亚洲人成在线 | 欧美激情精品久久久久 | 九精品 | 中文字幕在线日本 | 99中文字幕在线观看 | 天天综合导航 | 成人午夜电影网 | 久国产在线播放 | 99久久精品无码一区二区毛片 | 欧美成年人在线观看 | 久精品视频在线 | 久久久久免费 | 中文字幕一区在线 | 亚洲精品乱码久久久久久蜜桃欧美 | 91精品在线视频 | 99久久久久国产精品免费 | 99精品网站 | 欧美日韩精品免费观看视频 | 九九热在线精品 | 国产成人一区二区三区电影 | 亚洲国产中文字幕 | av日韩精品 | 日韩免费一区二区 | 久久爱资源网 | 久久你懂的 | 香蕉视频免费在线播放 | 精品国产免费久久 | 青青河边草手机免费 | 99色资源 | 国产成人久久精品77777综合 | 91人人插| 免费av在线播放 | 最近中文字幕在线 | 激情久久伊人 | 缴情综合网五月天 | 亚洲视屏在线播放 | av韩国在线 | 91av电影 | av大全在线免费观看 | 国产最顶级的黄色片在线免费观看 | 久久伊人精品一区二区三区 | www好男人| 免费 在线 中文 日本 | 日韩在线观看免费 | 天天爱天天射天天干天天 | 九九久久免费视频 | 久久九九影视 | 欧美精品免费在线 | 2021久久 | 成人国产精品免费观看 | 美女国产网站 | 丁香资源影视免费观看 | 国产高清免费观看 | 国产 日韩 中文字幕 | 中文字幕日韩伦理 | 久草在线视频在线 | 欧美在线1 | 亚洲精品日韩一区二区电影 | 免费日韩 精品中文字幕视频在线 | 黄色一级动作片 | 久久久福利视频 | 免费在线观看日韩欧美 | 视频国产一区二区三区 | 国产主播大尺度精品福利免费 | 国产精品中文字幕在线播放 | 国内精品久久久久影院男同志 | 亚洲资源在线观看 | 一级a性色生活片久久毛片波多野 | 99精品热视频| 成人在线播放网站 | 国产一级不卡视频 | 午夜国产在线观看 | 国产精品久久9 | 久草视频观看 | 97福利在线观看 | 久久精品这里热有精品 | 天天操综| 日韩精品一区不卡 | 丁香网五月天 | 中文字幕永久 | 国产高清一 | 国产美女视频一区 | 一区二区精品在线视频 | 97超碰免费在线观看 | 日韩免费中文字幕 | 深爱激情五月网 | 五月亚洲综合 | 成人夜晚看av | 正在播放五月婷婷狠狠干 | 国产精品免费观看网站 | 伊人久久在线观看 | 一区二区三区四区五区在线 | 欧美a在线免费观看 | 国产精品黑丝在线观看 | 日韩在线观看视频一区二区三区 | 日日操狠狠干 | 特级西西444www大精品视频免费看 | www免费看 | 日韩中文字| 国产麻豆剧传媒免费观看 | 夜夜看av| 91网址在线观看 | 一区二区av | 九九视频一区 | 色婷婷狠 | www色婷婷com| 天天人人综合 | 99久久婷婷国产综合精品 | 日韩系列| 久久国产一区二区三区 | 91精品久久久久久久99蜜桃 | 97香蕉久久超级碰碰高清版 | 欧美日韩国产高清视频 | www.五月婷婷.com | 一级黄色电影网站 | 免费视频 三区 | 国产香蕉视频在线播放 | 一区二区三区日韩在线 | 五月天色综合 | 亚洲电影免费 | 99r在线| 免费看网站在线 | 日韩欧美一区二区在线播放 | 天天色天天操综合网 | 黄色网址中文字幕 |