Python常见的pandas用法demo示例


Posted in Python onMarch 16, 2019

本文实例总结了Python常见的pandas用法。分享给大家供大家参考,具体如下:

import numpy as np
import pandas as pd
s = pd.Series([1,3,6, np.nan, 44, 1]) #定义一个序列。 序列就是一列内容,每一行有一个index值
print(s)
print(s.index)

0     1.0
1     3.0
2     6.0
3     NaN
4    44.0
5     1.0
dtype: float64
RangeIndex(start=0, stop=6, step=1)

dates = pd.date_range('20180101', periods=6)
print(dates)

DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04',
               '2018-01-05', '2018-01-06'],
              dtype='datetime64[ns]', freq='D')

df1 = pd.DataFrame(np.arange(12).reshape(3,4)) #定义DataFrame,可以看作一个有index和colunms的矩阵
print(df)

   0  1   2   3
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11

df2 = pd.DataFrame(np.random.randn(6,4), index=dates, columns=['a', 'b', 'c', 'd']) #np.random.randn(6,4)生成6行4列矩阵
print(df)

                   a         b         c         d
2018-01-01  0.300675  1.769383  1.244406 -1.058294
2018-01-02  0.832666  2.216755  0.178716 -0.156828
2018-01-03  1.314190 -0.866199  0.836150  1.001026
2018-01-04 -1.671724  1.147406 -0.148676 -0.272555
2018-01-05  1.146664  2.022861 -1.833995 -0.627568
2018-01-06 -0.192242  1.517676  0.756707  0.058869

df = pd.DataFrame({'A':1.0,
          'B':pd.Timestamp('20180101'),
          'C':pd.Series(1, index=list(range(4)), dtype='float32'),
          'D':np.array([3] * 4, dtype='int32'),
          'E':pd.Categorical(['test', 'train', 'test', 'train']),
          'F':'foo'}) #按照给出的逐列定义df

print(df)
print(df.dtypes)

     A          B    C  D      E    F
0  1.0 2018-01-01  1.0  3   test  foo
1  1.0 2018-01-01  1.0  3  train  foo
2  1.0 2018-01-01  1.0  3   test  foo
3  1.0 2018-01-01  1.0  3  train  foo
A           float64
B    datetime64[ns]
C           float32
D             int32
E          category
F            object
dtype: object

#df的行、列、值
print(df.index)
print(df.columns)
print(df.values)

Int64Index([0, 1, 2, 3], dtype='int64')
Index(['A', 'B', 'C', 'D', 'E', 'F'], dtype='object')
[[1.0 Timestamp('2018-01-01 00:00:00') 1.0 3 'test' 'foo']
 [1.0 Timestamp('2018-01-01 00:00:00') 1.0 3 'train' 'foo']
 [1.0 Timestamp('2018-01-01 00:00:00') 1.0 3 'test' 'foo']
 [1.0 Timestamp('2018-01-01 00:00:00') 1.0 3 'train' 'foo']]

print(df.describe()) #统计
print(df.T) #转置

         A    C    D
count  4.0  4.0  4.0
mean   1.0  1.0  3.0
std    0.0  0.0  0.0
min    1.0  1.0  3.0
25%    1.0  1.0  3.0
50%    1.0  1.0  3.0
75%    1.0  1.0  3.0
max    1.0  1.0  3.0
                     0                    1                    2  \
A                    1                    1                    1
B  2018-01-01 00:00:00  2018-01-01 00:00:00  2018-01-01 00:00:00
C                    1                    1                    1
D                    3                    3                    3
E                 test                train                 test
F                  foo                  foo                  foo
                     3
A                    1
B  2018-01-01 00:00:00
C                    1
D                    3
E                train
F                  foo

#df排序
print(df.sort_index(axis=1, ascending=False)) #根据索引值对各行进行排序(相当于重新排列各列的位置)
print(df.sort_values(by='E')) #根据内容值对各列进行排序

     F      E  D    C          B    A
0  foo   test  3  1.0 2018-01-01  1.0
1  foo  train  3  1.0 2018-01-01  1.0
2  foo   test  3  1.0 2018-01-01  1.0
3  foo  train  3  1.0 2018-01-01  1.0
     A          B    C  D      E    F
0  1.0 2018-01-01  1.0  3   test  foo
2  1.0 2018-01-01  1.0  3   test  foo
1  1.0 2018-01-01  1.0  3  train  foo
3  1.0 2018-01-01  1.0  3  train  foo

indexes = pd.date_range('20180101', periods=6)
df3 = pd.DataFrame(np.arange(24).reshape(6, 4), index=indexes, columns=['A', 'B', 'C', 'D'])
print(df3)
print()
#选择column
print(df3['A'])
print()
print(df3.A)

             A   B   C   D
2018-01-01   0   1   2   3
2018-01-02   4   5   6   7
2018-01-03   8   9  10  11
2018-01-04  12  13  14  15
2018-01-05  16  17  18  19
2018-01-06  20  21  22  23
2018-01-01     0
2018-01-02     4
2018-01-03     8
2018-01-04    12
2018-01-05    16
2018-01-06    20
Freq: D, Name: A, dtype: int32
2018-01-01     0
2018-01-02     4
2018-01-03     8
2018-01-04    12
2018-01-05    16
2018-01-06    20
Freq: D, Name: A, dtype: int32
            A  B   C   D
2018-01-01  0  1   2   3
2018-01-02  4  5   6   7
2018-01-03  8  9  10  11

#选择行, 类似limit语句
print(df3[0:0])
print()
print(df3[0:3])
print()
print(df3['20180103':'20180105'])

Empty DataFrame
Columns: [A, B, C, D]
Index: []
            A  B   C   D
2018-01-01  0  1   2   3
2018-01-02  4  5   6   7
2018-01-03  8  9  10  11
             A   B   C   D
2018-01-03   8   9  10  11
2018-01-04  12  13  14  15
2018-01-05  16  17  18  19

print(df3.loc['20180102']) #返回指定行构成的序列

A    4
B    5
C    6
D    7
Name: 2018-01-02 00:00:00, dtype: int32

print(df3.loc['20180103', ['A','C']]) #列筛选
print()
print(df3.loc['20180103':'20180105', ['A','C']]) #子df,类似select A, C from df limit ...
print()
print(df3.loc[:, ['A', 'B']])

A     8
C    10
Name: 2018-01-03 00:00:00, dtype: int32
             A   C
2018-01-03   8  10
2018-01-04  12  14
2018-01-05  16  18
             A   B
2018-01-01   0   1
2018-01-02   4   5
2018-01-03   8   9
2018-01-04  12  13
2018-01-05  16  17
2018-01-06  20  21

print(df3);print()
print(df3.iloc[1]);print()
print(df3.iloc[1,1]);print()
print(df3.iloc[:,1]);print()
print(df3.iloc[0:3,1:3]);print()
print(df3.iloc[[1,3,5],[0,2]]) #行可以不连续,limit做不到

             A   B   C   D
2018-01-01   0   1   2   3
2018-01-02   4   5   6   7
2018-01-03   8   9  10  11
2018-01-04  12  13  14  15
2018-01-05  16  17  18  19
2018-01-06  20  21  22  23
A    4
B    5
C    6
D    7
Name: 2018-01-02 00:00:00, dtype: int32
5
2018-01-01     1
2018-01-02     5
2018-01-03     9
2018-01-04    13
2018-01-05    17
2018-01-06    21
Freq: D, Name: B, dtype: int32
            B   C
2018-01-01  1   2
2018-01-02  5   6
2018-01-03  9  10
             A   C
2018-01-02   4   6
2018-01-04  12  14
2018-01-06  20  22

# print(df3.ix[:3, ['A', 'C']])\
print(df3);print()
print(df3[df3.A >= 8]) #根据值进行条件过滤,类似where A >= 8条件语句

             A   B   C   D
2018-01-01   0   1   2   3
2018-01-02   4   5   6   7
2018-01-03   8   9  10  11
2018-01-04  12  13  14  15
2018-01-05  16  17  18  19
2018-01-06  20  21  22  23
             A   B   C   D
2018-01-03   8   9  10  11
2018-01-04  12  13  14  15
2018-01-05  16  17  18  19
2018-01-06  20  21  22  23

indexes1 = pd.date_range('20180101', periods=6)
df4 = pd.DataFrame(np.arange(24).reshape(6, 4), index=indexes1, columns=['A', 'B', 'C', 'D'])
print(df4);print()
#给某个元素赋值
df4.A[1] = 1111
df4.B['20180103'] = 2222
df4.iloc[3, 2] = 3333
df4.loc['20180105', 'D'] = 4444
print(df4);print()
#范围赋值
df4.B[df4.A < 10] = -1
print(df4);print()
df4[df4.A < 10] = 0
print(df4);print()

             A   B   C   D
2018-01-01   0   1   2   3
2018-01-02   4   5   6   7
2018-01-03   8   9  10  11
2018-01-04  12  13  14  15
2018-01-05  16  17  18  19
2018-01-06  20  21  22  23
               A     B     C     D
2018-01-01     0     1     2     3
2018-01-02  1111     5     6     7
2018-01-03     8  2222    10    11
2018-01-04    12    13  3333    15
2018-01-05    16    17    18  4444
2018-01-06    20    21    22    23
               A   B     C     D
2018-01-01     0  -1     2     3
2018-01-02  1111   5     6     7
2018-01-03     8  -1    10    11
2018-01-04    12  13  3333    15
2018-01-05    16  17    18  4444
2018-01-06    20  21    22    23
               A   B     C     D
2018-01-01     0   0     0     0
2018-01-02  1111   5     6     7
2018-01-03     0   0     0     0
2018-01-04    12  13  3333    15
2018-01-05    16  17    18  4444
2018-01-06    20  21    22    23

indexes1 = pd.date_range('20180101', periods=6)
df4 = pd.DataFrame(np.arange(24).reshape(6, 4), index=indexes1, columns=['A', 'B', 'C', 'D'])
print(df4);print()
#添加一列
df4['E'] = np.NaN
print(df4);print()
#由于index没对齐,原df没有的行默认为NaN,类型为float64,多出的行丢弃
df4['F'] = pd.Series([1,2,3,4,5,6], index=pd.date_range('20180102', periods=6))
print(df4);print()
print(df4.dtypes)

             A   B   C   D
2018-01-01   0   1   2   3
2018-01-02   4   5   6   7
2018-01-03   8   9  10  11
2018-01-04  12  13  14  15
2018-01-05  16  17  18  19
2018-01-06  20  21  22  23
             A   B   C   D   E
2018-01-01   0   1   2   3 NaN
2018-01-02   4   5   6   7 NaN
2018-01-03   8   9  10  11 NaN
2018-01-04  12  13  14  15 NaN
2018-01-05  16  17  18  19 NaN
2018-01-06  20  21  22  23 NaN
             A   B   C   D   E    F
2018-01-01   0   1   2   3 NaN  NaN
2018-01-02   4   5   6   7 NaN  1.0
2018-01-03   8   9  10  11 NaN  2.0
2018-01-04  12  13  14  15 NaN  3.0
2018-01-05  16  17  18  19 NaN  4.0
2018-01-06  20  21  22  23 NaN  5.0
A      int32
B      int32
C      int32
D      int32
E    float64
F    float64
dtype: object

df_t = pd.DataFrame(np.arange(24).reshape(6, 4), index=[1,2,3,4,5,6], columns=['A', 'B', 'C', 'D'])
df_t.iloc[0, 1] = np.NaN
df_t.iloc[1, 2] = np.NaN
df = df_t.copy()
print(df);print()
print(df.dropna(axis=0, how='any'));print()
df = df_t.copy()
print(df.dropna(axis=1, how='any'));print()
df = df_t.copy()
df.C = np.NaN
print(df);print()
print(df.dropna(axis=1, how='all'));print()

    A     B     C   D
1   0   NaN   2.0   3
2   4   5.0   NaN   7
3   8   9.0  10.0  11
4  12  13.0  14.0  15
5  16  17.0  18.0  19
6  20  21.0  22.0  23
    A     B     C   D
3   8   9.0  10.0  11
4  12  13.0  14.0  15
5  16  17.0  18.0  19
6  20  21.0  22.0  23
    A   D
1   0   3
2   4   7
3   8  11
4  12  15
5  16  19
6  20  23
    A     B   C   D
1   0   NaN NaN   3
2   4   5.0 NaN   7
3   8   9.0 NaN  11
4  12  13.0 NaN  15
5  16  17.0 NaN  19
6  20  21.0 NaN  23
    A     B   D
1   0   NaN   3
2   4   5.0   7
3   8   9.0  11
4  12  13.0  15
5  16  17.0  19
6  20  21.0  23

df = df_t.copy()
print(df);print()
print(df.isna());print()
print(df.isnull().any());print() #isnull是isna别名,功能一样
print(df.isnull().any(axis=1));print()
print(np.any(df.isna() == True));print()
print(df.fillna(value=0)) #将NaN赋值

    A     B     C   D
1   0   NaN   2.0   3
2   4   5.0   NaN   7
3   8   9.0  10.0  11
4  12  13.0  14.0  15
5  16  17.0  18.0  19
6  20  21.0  22.0  23
       A      B      C      D
1  False   True  False  False
2  False  False   True  False
3  False  False  False  False
4  False  False  False  False
5  False  False  False  False
6  False  False  False  False
A    False
B     True
C     True
D    False
dtype: bool
1     True
2     True
3    False
4    False
5    False
6    False
dtype: bool
True
    A     B     C   D
1   0   0.0   2.0   3
2   4   5.0   0.0   7
3   8   9.0  10.0  11
4  12  13.0  14.0  15
5  16  17.0  18.0  19
6  20  21.0  22.0  23

data = pd.read_csv('D:/pythonwp/test/student.csv')
print(data)
data.to_pickle('D:/pythonwp/test/student.pickle')

   id     name  age  gender
0   1       牛帅   23    Male
1   2      gyb   89    Male
2   3      xxs   27    Male
3   4      hey   24  Female
4   5    奥莱利赫本   66  Female
5   6  Jackson   61    Male
6   7       牛帅   23    Male

df0 = pd.DataFrame(np.ones((3, 4)) * 0, columns=['A', 'B', 'C', 'D'])
df1 = pd.DataFrame(np.ones((3, 4)) * 1, columns=['A', 'B', 'C', 'D'])
df2 = pd.DataFrame(np.ones((3, 4)) * 2, columns=['A', 'B', 'C', 'D'])
print(df0); print()
print(df1); print()
print(df2); print()
res = pd.concat([df0, df1, df2], axis = 0)
print(res); print()
res = pd.concat([df0, df1, df2], axis = 0, ignore_index=True)
print(res)

     A    B    C    D
0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
     A    B    C    D
0  1.0  1.0  1.0  1.0
1  1.0  1.0  1.0  1.0
2  1.0  1.0  1.0  1.0
     A    B    C    D
0  2.0  2.0  2.0  2.0
1  2.0  2.0  2.0  2.0
2  2.0  2.0  2.0  2.0
     A    B    C    D
0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
0  1.0  1.0  1.0  1.0
1  1.0  1.0  1.0  1.0
2  1.0  1.0  1.0  1.0
0  2.0  2.0  2.0  2.0
1  2.0  2.0  2.0  2.0
2  2.0  2.0  2.0  2.0
     A    B    C    D
0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
3  1.0  1.0  1.0  1.0
4  1.0  1.0  1.0  1.0
5  1.0  1.0  1.0  1.0
6  2.0  2.0  2.0  2.0
7  2.0  2.0  2.0  2.0
8  2.0  2.0  2.0  2.0

df0 = pd.DataFrame(np.ones((3, 4)) * 0, columns=['A', 'B', 'C', 'D'])
df1 = pd.DataFrame(np.ones((3, 4)) * 1, columns=['E', 'F', 'C', 'D'])
res = pd.concat([df0, df1], ignore_index=True)
print(res);print()
res = pd.concat([df0, df1], join='outer', ignore_index=True)
print(res);print()
res = pd.concat([df0, df1], join='inner',ignore_index=True)
print(res);print()

     A    B    C    D    E    F
0  0.0  0.0  0.0  0.0  NaN  NaN
1  0.0  0.0  0.0  0.0  NaN  NaN
2  0.0  0.0  0.0  0.0  NaN  NaN
3  NaN  NaN  1.0  1.0  1.0  1.0
4  NaN  NaN  1.0  1.0  1.0  1.0
5  NaN  NaN  1.0  1.0  1.0  1.0
     A    B    C    D    E    F
0  0.0  0.0  0.0  0.0  NaN  NaN
1  0.0  0.0  0.0  0.0  NaN  NaN
2  0.0  0.0  0.0  0.0  NaN  NaN
3  NaN  NaN  1.0  1.0  1.0  1.0
4  NaN  NaN  1.0  1.0  1.0  1.0
5  NaN  NaN  1.0  1.0  1.0  1.0
     C    D
0  0.0  0.0
1  0.0  0.0
2  0.0  0.0
3  1.0  1.0
4  1.0  1.0
5  1.0  1.0

#横向合并
df0 = pd.DataFrame(np.ones((3, 4)) * 0, index=['1', '2', '3'], columns=['A', 'B', 'C', 'D'])
df1 = pd.DataFrame(np.ones((3, 4)) * 1, index=['2', '3', '4'], columns=['A', 'B', 'C', 'D'])
print(df0);print()
print(df1);print()
res = pd.concat([df0, df1], axis=1)
print(res);print()
res = pd.concat([df0, df1], axis=1, join='inner', ignore_index=True)
print(res);print()
res = pd.concat([df0, df1], axis=1, join_axes=[df0.index])
print(res);print()

     A    B    C    D
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
3  0.0  0.0  0.0  0.0
     A    B    C    D
2  1.0  1.0  1.0  1.0
3  1.0  1.0  1.0  1.0
4  1.0  1.0  1.0  1.0
     A    B    C    D    A    B    C    D
1  0.0  0.0  0.0  0.0  NaN  NaN  NaN  NaN
2  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0
3  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0
4  NaN  NaN  NaN  NaN  1.0  1.0  1.0  1.0
     0    1    2    3    4    5    6    7
2  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0
3  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0
     A    B    C    D    A    B    C    D
1  0.0  0.0  0.0  0.0  NaN  NaN  NaN  NaN
2  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0
3  0.0  0.0  0.0  0.0  1.0  1.0  1.0  1.0

df0 = pd.DataFrame(np.ones((3, 4)) * 0, index=['1', '2', '3'], columns=['A', 'B', 'C', 'D'])
df1 = pd.DataFrame(np.ones((3, 4)) * 1, index=['2', '3', '4'], columns=['A', 'B', 'C', 'D'])
print(df0);print()
print(df1);print()
res = df0.append([df1, df1], ignore_index=False)
print(res);print()
s = pd.Series([1,2,3,4], index=['A','B','C','E'])
print(df0.append(s, ignore_index=True))

     A    B    C    D
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
3  0.0  0.0  0.0  0.0
     A    B    C    D
2  1.0  1.0  1.0  1.0
3  1.0  1.0  1.0  1.0
4  1.0  1.0  1.0  1.0
     A    B    C    D
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
3  0.0  0.0  0.0  0.0
2  1.0  1.0  1.0  1.0
3  1.0  1.0  1.0  1.0
4  1.0  1.0  1.0  1.0
2  1.0  1.0  1.0  1.0
3  1.0  1.0  1.0  1.0
4  1.0  1.0  1.0  1.0
     A    B    C    D    E
0  0.0  0.0  0.0  0.0  NaN
1  0.0  0.0  0.0  0.0  NaN
2  0.0  0.0  0.0  0.0  NaN
3  1.0  2.0  3.0  NaN  4.0

df1 = pd.DataFrame({'key':['K0', 'K1', 'K2'],
          'A':['A0', 'A1', 'A2'],
          'B':['B0', 'B1', 'B2']})
df2 = pd.DataFrame({'key':['K3', 'K1', 'K2'],
          'C':['C3', 'C1', 'C2'],
          'D':['D3', 'D1', 'D2']})
print(df1); print()
print(df2); print()
res = pd.merge(df1, df2, on='key')
print(res); print()
res = pd.merge(df1, df2, on='key', how='outer')
print(res); print()
res = pd.merge(df1, df2, on='key', how='left')
print(res); print()
res = pd.merge(df1, df2, on='key', how='right')
print(res); print()

    A   B key
0  A0  B0  K0
1  A1  B1  K1
2  A2  B2  K2
    C   D key
0  C3  D3  K3
1  C1  D1  K1
2  C2  D2  K2
    A   B key   C   D
0  A1  B1  K1  C1  D1
1  A2  B2  K2  C2  D2
     A    B key    C    D
0   A0   B0  K0  NaN  NaN
1   A1   B1  K1   C1   D1
2   A2   B2  K2   C2   D2
3  NaN  NaN  K3   C3   D3
    A   B key    C    D
0  A0  B0  K0  NaN  NaN
1  A1  B1  K1   C1   D1
2  A2  B2  K2   C2   D2
     A    B key   C   D
0   A1   B1  K1  C1  D1
1   A2   B2  K2  C2  D2
2  NaN  NaN  K3  C3  D3

df1 = pd.DataFrame({'key1':['K0', 'K0', 'K1'],
          'key2':['K0', 'K1', 'K1'],
          'A':['A0', 'A1', 'A2'],
          'B':['B0', 'B1', 'B2']})
df2 = pd.DataFrame({'key1':['K0', 'K0', 'K1', 'K2'],
          'key2':['K0', 'K0', 'K1', 'K2'],
          'C':['C3', 'C1', 'C2', 'C4'],
          'D':['D3', 'D1', 'D2', 'D4']})
print(df1); print()
print(df2); print()
res = pd.merge(df1, df2, on=['key1','key2'])
print(res); print()
res = pd.merge(df1, df2, on=['key1','key2'], how='outer', indicator='indi')
print(res); print()

    A   B key1 key2
0  A0  B0   K0   K0
1  A1  B1   K0   K1
2  A2  B2   K1   K1
    C   D key1 key2
0  C3  D3   K0   K0
1  C1  D1   K0   K0
2  C2  D2   K1   K1
3  C4  D4   K2   K2
    A   B key1 key2   C   D
0  A0  B0   K0   K0  C3  D3
1  A0  B0   K0   K0  C1  D1
2  A2  B2   K1   K1  C2  D2
     A    B key1 key2    C    D        indi
0   A0   B0   K0   K0   C3   D3        both
1   A0   B0   K0   K0   C1   D1        both
2   A1   B1   K0   K1  NaN  NaN   left_only
3   A2   B2   K1   K1   C2   D2        both
4  NaN  NaN   K2   K2   C4   D4  right_only

#以上是根据值合并。下面根据index合并
df1 = pd.DataFrame({'A':['A0', 'A1', 'A2'],
          'B':['B0', 'B1', 'B2']},
          index=['index0', 'index1', 'index2'])
df2 = pd.DataFrame({'A':['C3', 'C1', 'C2'],
          'D':['D3', 'D1', 'D2']},
          index=['index3', 'index1', 'index2'])
print(df1); print()
print(df2); print()
res = pd.merge(df1, df2, left_index=True, right_index=True)
print(res); print()
res = pd.merge(df1, df2, left_index=True, right_index=True, how='outer', suffixes=['_b', '_g'])
print(res); print()

         A   B
index0  A0  B0
index1  A1  B1
index2  A2  B2
         A   D
index3  C3  D3
index1  C1  D1
index2  C2  D2
       A_x   B A_y   D
index1  A1  B1  C1  D1
index2  A2  B2  C2  D2
        A_b    B  A_g    D
index0   A0   B0  NaN  NaN
index1   A1   B1   C1   D1
index2   A2   B2   C2   D2
index3  NaN  NaN   C3   D3

res = df1.join(df2, how='outer', lsuffix='_left', rsuffix='_right') #不用on默认用索引合并
print(res);print()
res = df1.join(df2, on='B', how='outer', lsuffix='_left', rsuffix='_right') #用on指定df1的某列和df2的索引合并
print(res);print()

       A_left    B A_right    D
index0     A0   B0     NaN  NaN
index1     A1   B1      C1   D1
index2     A2   B2      C2   D2
index3    NaN  NaN      C3   D3
       A_left       B A_right    D
index0     A0      B0     NaN  NaN
index1     A1      B1     NaN  NaN
index2     A2      B2     NaN  NaN
index2    NaN  index3      C3   D3
index2    NaN  index1      C1   D1
index2    NaN  index2      C2   D2

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt #画图模块
s = pd.Series(np.random.randn(1000), index=np.arange(1000))
s = s.cumsum()
#须在命令行执行, jupyter会报错
#s.plot()
#plt.show()
df = pd.DataFrame(np.random.randn(1000, 3), columns=['A', 'B', 'C'])
df = df.cumsum()
print(df.head()); print() #head默认显示前5行
#须在命令行执行, jupyter会报错
#s.plot()
#plt.show()
#须在命令行执行, jupyter会报错
#'bar', 'hist', 'box', 'kde', 'area', 'scatter', 'hexbin', 'pie'...
#class_B = df.plot.scatter(x='A', y='B', color='DarkBlue', label='Class B') #画图,scatter<散点图>
#df.plot.scatter(x='A', y='C', color='DarkRed', label='Class C', class_B=class_B)
#plt.show()

          A         B         C
0 -0.399363 -1.004210  0.641141
1 -1.970009 -0.608482 -0.758504
2 -3.081640 -0.617352 -1.143872
3 -2.174627 -1.383785 -1.011411
4 -1.415515 -1.892226 -2.511739

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中对元组和列表按条件进行排序的方法示例
Nov 10 Python
python实现图书管理系统
Mar 12 Python
Python实现统计给定列表中指定数字出现次数的方法
Apr 11 Python
python 重定向获取真实url的方法
May 11 Python
Linux 修改Python命令的方法示例
Dec 03 Python
浅谈python标准库--functools.partial
Mar 13 Python
python实现邮件自动发送
Aug 10 Python
python numpy 常用随机数的产生方法的实现
Aug 21 Python
Django获取model中的字段名和字段的verbose_name方式
May 19 Python
python之随机数函数的实现示例
Dec 30 Python
详解分布式系统中如何用python实现Paxos
May 18 Python
Python编程super应用场景及示例解析
Oct 05 Python
详解python中list的使用
Mar 15 #Python
详解Python_shutil模块
Mar 15 #Python
python批量修改文件夹及其子文件夹下的文件内容
Mar 15 #Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
Mar 14 #Python
详解Django+uwsgi+Nginx上线最佳实战
Mar 14 #Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
Mar 14 #Python
Python通过TensorFlow卷积神经网络实现猫狗识别
Mar 14 #Python
You might like
php获取网页内容方法总结
2008/12/04 PHP
Zend 输出产生XML解析错误
2009/03/03 PHP
PHP 获取远程文件内容的函数代码
2010/03/24 PHP
PHP面向对象分析设计的61条军规小结
2010/07/17 PHP
Android AsyncTack 异步任务实例详解
2016/11/02 PHP
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
2016/12/02 PHP
实例分析10个PHP常见安全问题
2019/07/09 PHP
PHP针对redis常用操作实例详解
2019/08/17 PHP
JavaScript入门教程(2) JS基础知识
2009/01/31 Javascript
JQuery 学习笔记 选择器之二
2009/07/23 Javascript
JS多物体 任意值 链式 缓冲运动
2012/08/10 Javascript
jquery获取元素索引值index()示例
2014/02/13 Javascript
JavaScript Function函数类型介绍
2015/04/08 Javascript
jQuery中$.extend()用法实例
2015/06/24 Javascript
详解a++和++a的区别
2017/08/30 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
vue+element tabs选项卡分页效果
2020/06/29 Javascript
js HTML DOM EventListener功能与用法实例分析
2020/04/27 Javascript
js+canvas实现五子棋小游戏
2020/08/02 Javascript
[51:05]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第一局
2016/03/06 DOTA
[16:01]夜魇凡尔赛茶话会 第二期01:你比划我猜
2021/03/11 DOTA
Python3搜索及替换文件中文本的方法
2015/05/22 Python
Python用模块pytz来转换时区
2016/08/19 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
2017/08/21 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
2018/12/17 Python
Python使用scrapy爬取阳光热线问政平台过程解析
2019/08/14 Python
Python类的动态绑定实现原理
2020/03/21 Python
深入浅析python 中的self和cls的区别
2020/06/20 Python
婴儿地球:Baby Earth
2018/12/25 全球购物
《影子》教学反思
2014/02/21 职场文书
离婚协议书怎么写(范本参考)
2014/09/30 职场文书
离职报告格式
2014/11/04 职场文书
会计继续教育培训心得体会
2016/01/19 职场文书
《云雀的心愿》教学反思
2016/02/23 职场文书
CocosCreator入门教程之网络通信
2021/04/16 Javascript
Java org.w3c.dom.Document 类方法引用报错
2021/08/07 Java/Android