免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
pd.DataFrame()函數(shù)解析(最清晰的解釋)

DataFrame是Python中Pandas庫中的一種數(shù)據(jù)結(jié)構(gòu),它類似excel,是一種二維表。

0 簡介

DataFrame的單元格可以存放數(shù)值、字符串等,這和excel表很像,同時(shí)DataFrame可以設(shè)置列名columns與行名index。

1 創(chuàng)建DataFrame

以下的實(shí)驗(yàn)是在python3.5.6版本下進(jìn)行的。

pandas常與numpy一起配合使用,所以通常會(huì)一起引用,也就是:

import pandas as pdimport numpy as np
1.1 使用numpy函數(shù)創(chuàng)建

可以直接通過pandas的DataFrame函數(shù)進(jìn)行創(chuàng)建。

import pandas as pdimport numpy as npdf1 = pd.DataFrame(np.random.randn(3, 3), index=list('abc'), columns=list('ABC'))print(df1)#           A         B         C# a -0.612978  0.237191  0.312969# b -1.281485  1.135944  0.162456# c  2.232905  0.200209  0.028671

其中第一個(gè)參數(shù)是存放在DataFrame里的數(shù)據(jù),第二個(gè)參數(shù)index就是之前說的行名,第三個(gè)參數(shù)columns是之前說的列名。

其中后兩個(gè)參數(shù)可以使用list輸入,但是注意,這個(gè)list的長度要和DataFrame的大小匹配,不然會(huì)報(bào)錯(cuò)。

df2 = pd.DataFrame(np.random.randn(3, 3), index=list('abcd'), columns=list('ABCD'))# ValueError: Shape of passed values is (3, 3), indices imply (4, 4)

當(dāng)然,這兩個(gè)參數(shù)是可選的,你可以選擇不設(shè)置,而且這兩個(gè)list是可以一樣的。

df3 = pd.DataFrame(np.random.randn(3, 3), index=list('ABC'), columns=list('ABC'))#           A         B         C# A  1.106838  0.309086  0.748472# B  0.439228 -0.213154 -1.438647# C  0.292450  0.841237 -0.069207
1.2 直接創(chuàng)建
import pandas as pdimport numpy as npdf4 = pd.DataFrame([[1, 2, 3], 					[2, 3, 4],                    [3, 4, 5]],                   index=list('abc'), columns=list('ABC'))print(df4)#    A  B  C# a  1  2  3# b  2  3  4# c  3  4  5
1.3 使用字典創(chuàng)建
import pandas as pdimport numpy as npdic1 = {    'name': [        '張三', '李四', '王二麻子', '小淘氣'], 'age': [            37, 30, 50, 16], 'gender': [                '男', '男', '男', '女']}df5 = pd.DataFrame(dic1)print(df5)#    age gender  name# 0   37      男    張三# 1   30      男    李四# 2   50      男  王二麻子# 3   16      女   小淘氣

2 DataFrame屬性

2.1 查看列的數(shù)據(jù)類型
print(df5.dtypes)# age        int64# gender    object# name      object# dtype: object
2.2 查看DataFrame的頭尾

使用head可以查看前幾行的數(shù)據(jù),默認(rèn)的是前5行,不過也可以自己設(shè)置。

使用tail可以查看后幾行的數(shù)據(jù),默認(rèn)也是5行,參數(shù)可以自己設(shè)置。

比如看前5行。

import pandas as pdimport numpy as npdf6 = pd.DataFrame(np.arange(36).reshape(6, 6), index=list('abcdef'), columns=list('ABCDEF'))print(df6)#     A   B   C   D   E   F# a   0   1   2   3   4   5# b   6   7   8   9  10  11# c  12  13  14  15  16  17# d  18  19  20  21  22  23# e  24  25  26  27  28  29# f  30  31  32  33  34  35print(df6.head())#     A   B   C   D   E   F# a   0   1   2   3   4   5# b   6   7   8   9  10  11# c  12  13  14  15  16  17# d  18  19  20  21  22  23# e  24  25  26  27  28  29

比如只看前2行。

print(df6.head(2))#    A  B  C  D   E   F# a  0  1  2  3   4   5# b  6  7  8  9  10  11

比如看后5行。

print(df6.tail())#     A   B   C   D   E   F# b   6   7   8   9  10  11# c  12  13  14  15  16  17# d  18  19  20  21  22  23# e  24  25  26  27  28  29# f  30  31  32  33  34  35

比如只看后2行。

print(df6.tail(2))#     A   B   C   D   E   F# e  24  25  26  27  28  29# f  30  31  32  33  34  35
2.3 查看行名與列名

使用index查看行名,columns查看列名。

print(df6.index)print(df6.columns)# Index(['a', 'b', 'c', 'd', 'e', 'f'], dtype='object')# Index(['A', 'B', 'C', 'D', 'E', 'F'], dtype='object')
2.4 查看數(shù)據(jù)值

使用values可以查看DataFrame里的數(shù)據(jù)值,返回的是一個(gè)數(shù)組。

print(df6.values)# [[ 0  1  2  3  4  5]#  [ 6  7  8  9 10 11]#  [12 13 14 15 16 17]#  [18 19 20 21 22 23]#  [24 25 26 27 28 29]#  [30 31 32 33 34 35]]

比如說查看某一列所有的數(shù)據(jù)值。

print(df6['B'].values)[ 1  7 13 19 25 31]

如果查看某一行所有的數(shù)據(jù)值。使用iloc查看數(shù)據(jù)值(但是好像只能根據(jù)行來查看?),iloc是根據(jù)數(shù)字索引(也就是行號(hào))。可以看一下博客pandas.iloc()函數(shù)解析。

print(df6.iloc[0])# A    0# B    1# C    2# D    3# E    4# F    5# Name: a, dtype: int32
2.5 查看行列數(shù)

使用shape查看行列數(shù),參數(shù)為0表示查看行數(shù),參數(shù)為1表示查看列數(shù)。

print(df6.shape[0])print(df6.shape[1])# 6# 6
2.6 切片

使用冒號(hào)進(jìn)行切片。

print(df6['a':'b'])#    A  B  C  D   E   F# a  0  1  2  3   4   5# b  6  7  8  9  10  11
2.7 索引
print(df6.loc[:,'A':'B'])#     A   B# a   0   1# b   6   7# c  12  13# d  18  19# e  24  25# f  30  31
  • 切片表示的是行切片

  • 索引表示的是列索引

3 DataFrame操作

3.1 轉(zhuǎn)置

直接字母T,線性代數(shù)上線。

print(df6.T)#    a   b   c   d   e   f# A  0   6  12  18  24  30# B  1   7  13  19  25  31# C  2   8  14  20  26  32# D  3   9  15  21  27  33# E  4  10  16  22  28  34# F  5  11  17  23  29  35
3.2 描述性統(tǒng)計(jì)

使用describe可以對(duì)數(shù)據(jù)根據(jù)進(jìn)行描述性統(tǒng)計(jì)。

print(df6.describe())#                A          B          C          D          E          F# count   6.000000   6.000000   6.000000   6.000000   6.000000   6.000000# mean   15.000000  16.000000  17.000000  18.000000  19.000000  20.000000# std    11.224972  11.224972  11.224972  11.224972  11.224972  11.224972# min     0.000000   1.000000   2.000000   3.000000   4.000000   5.000000# 25%     7.500000   8.500000   9.500000  10.500000  11.500000  12.500000# 50%    15.000000  16.000000  17.000000  18.000000  19.000000  20.000000# 75%    22.500000  23.500000  24.500000  25.500000  26.500000  27.500000# max    30.000000  31.000000  32.000000  33.000000  34.000000  35.000000

如果有的列是非數(shù)值型的,那么就不會(huì)進(jìn)行統(tǒng)計(jì)。

如果想對(duì)行進(jìn)行描述性統(tǒng)計(jì),轉(zhuǎn)置后再進(jìn)行describe。

3.3 計(jì)算

使用sum默認(rèn)對(duì)每列求和,sum(1)為對(duì)每行求和。

print(df6.sum())# A     90# B     96# C    102# D    108# E    114# F    120# dtype: int64print(df6.sum(1))# a     15# b     51# c     87# d    123# e    159# f    195# dtype: int64

數(shù)乘運(yùn)算使用apply。

print(df6.apply(lambda x: x * 2))#     A   B   C   D   E   F# a   0   2   4   6   8  10# b  12  14  16  18  20  22# c  24  26  28  30  32  34# d  36  38  40  42  44  46# e  48  50  52  54  56  58# f  60  62  64  66  68  70

乘方運(yùn)算跟matlab類似,直接使用兩個(gè)*。

print(df6**2)#      A    B     C     D     E     F# a    0    1     4     9    16    25# b   36   49    64    81   100   121# c  144  169   196   225   256   289# d  324  361   400   441   484   529# e  576  625   676   729   784   841# f  900  961  1024  1089  1156  1225
3.4 新增

擴(kuò)充列可以直接像字典一樣,列名對(duì)應(yīng)一個(gè)list,但是注意list的長度要跟index的長度一致。

df6['G']=['999','999','999','999','999','999']print(df6)#     A   B   C   D   E   F    G# a   0   1   2   3   4   5  999# b   6   7   8   9  10  11  999# c  12  13  14  15  16  17  999# d  18  19  20  21  22  23  999# e  24  25  26  27  28  29  999# f  30  31  32  33  34  35  999

還可以使用insert,使用這個(gè)方法可以指定把列插入到第幾列,其他的列順延。

df6.insert(0, 'QQ', ['999','999','999','999','999','999'])print(df6)#     QQ   A   B   C   D   E   F# a  999   0   1   2   3   4   5# b  999   6   7   8   9  10  11# c  999  12  13  14  15  16  17# d  999  18  19  20  21  22  23# e  999  24  25  26  27  28  29# f  999  30  31  32  33  34  35
3.5 合并

使用join可以將兩個(gè)DataFrame合并,但只根據(jù)行列名合并,并且以作用的那個(gè)DataFrame的為基準(zhǔn)。

# 也就是以df6為基準(zhǔn)。df7 = pd.DataFrame(['my', 'name', 'is', 'a', 'b', 'c'], index=list('abcdef'), columns=list('G'))df8 = df6.join(df7)print(df8)#     A   B   C   D   E   F     G# a   0   1   2   3   4   5    my# b   6   7   8   9  10  11  name# c  12  13  14  15  16  17    is# d  18  19  20  21  22  23     a# e  24  25  26  27  28  29     b# f  30  31  32  33  34  35     c

但是,join這個(gè)方法還有how這個(gè)參數(shù)可以設(shè)置,合并兩個(gè)DataFrame的交集或并集。參數(shù)為’inner’表示交集,'outer’表示并集。

df7 = pd.DataFrame(['2', '6', '7', '19', '44', '77'], index=list('abekld'), columns=list('G'))df8=df6.join(df7,how='inner')df9=df6.join(df7,how='outer')print(df8)#     A   B   C   D   E   F   G# a   0   1   2   3   4   5   2# b   6   7   8   9  10  11   6# d  18  19  20  21  22  23  77# e  24  25  26  27  28  29   7print(df9)#       A     B     C     D     E     F    G# a   0.0   1.0   2.0   3.0   4.0   5.0    2# b   6.0   7.0   8.0   9.0  10.0  11.0    6# c  12.0  13.0  14.0  15.0  16.0  17.0  NaN# d  18.0  19.0  20.0  21.0  22.0  23.0   77# e  24.0  25.0  26.0  27.0  28.0  29.0    7# f  30.0  31.0  32.0  33.0  34.0  35.0  NaN# k   NaN   NaN   NaN   NaN   NaN   NaN   19# l   NaN   NaN   NaN   NaN   NaN   NaN   44

如果要合并多個(gè)Dataframe,可以用list把幾個(gè)Dataframe裝起來,然后使用concat轉(zhuǎn)化為一個(gè)新的Dataframe。

df10 = pd.DataFrame([1, 2, 3, 4, 5, 6], 					index=list('ABCDEF'), columns=['a'])df11 = pd.DataFrame([10, 20, 30, 40, 50, 60],                    index=list('ABCDEF'), columns=['b'])df12 = pd.DataFrame([100, 200, 300, 400, 500, 600],                    index=list('ABCDEF'), columns=['c'])list1 = [df10.T, df11.T, df12.T]df13 = pd.concat(list1)print(df13)#      A    B    C    D    E    F# a    1    2    3    4    5    6# b   10   20   30   40   50   60# c  100  200  300  400  500  600
3.6 去重
df.drop_duplicates(subset=None,                   keep='first',                   inplace=False                   )

參數(shù):

  • subset:指定是哪些列重復(fù)。

  • keep:去重后留下第幾行,{‘first’, ‘last’, False}, default ‘first’},如果是False,則去除全部重復(fù)的行。

  • inplace:是否作用于原來的df。

df14 = pd.DataFrame(data=[[1, 2, 3],                          [1, 2, 4],                          [1, 2, 4],                          [1, 2, 3],                          [1, 2, 5],                          [1, 2, 5]],                    index=list('ABCDEF'),                    columns=['a', 'b', 'c'])print(df14)#    a  b  c# A  1  2  3# B  1  2  4# C  1  2  4# D  1  2  3# E  1  2  5# F  1  2  5

去除重復(fù)行,保留重復(fù)行中最后一行

df14.drop_duplicates(keep='last')#    a  b  c# C  1  2  4# D  1  2  3# F  1  2  5

去除’c’列中有重復(fù)的值所在的行

print(df14.drop_duplicates(subset=('c',)))#    a  b  c# A  1  2  3# B  1  2  4# E  1  2  5
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Pandas reindex重置索引
[轉(zhuǎn)]10 minutes to pandas
簡約而不簡單|值得收藏的Pandas基本操作指南
全網(wǎng)最全的Pandas入門教程
一萬字的Pandas常用知識(shí)點(diǎn)介紹加案例
數(shù)據(jù)分析實(shí)戰(zhàn)(5)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服