(笔记)pandas学习(持续更新......)

目录

(1)打印某列的唯一值

(2)唯一值出现的次数

(3)按列的值选择行数

(4)dataframe类型的要编成ndarray类型

(5)表的连接


(1)打印某列的唯一值

真是能偷懒,hhhh

正经写法:

print(train['label'].unique())

(2)唯一值出现的次数

(3)按列的值选择行数

tr = dataset.loc[dataset['day']!=30]
te =dataset.loc[dataset['day']==30]
te =te.loc[te['future_slice_id']<=30]

(4)dataframe类型的要编成ndarray类型

dataframe不能按照行进行索引,但是在进行k折交叉验证时,行索引变得十分重要,所以dataframe类型的要编成ndarray类型。

import numpy as np

#法1:DataFrame对象作为参数创建ndarray对象
np.array(df)

#法2:指定列转换为ndarray类型
df.as_matrix(['future_slice_id', 'current_slice_id'])

#法3:等同与无参数的as_matrix();法1、法3效果一样,都是整个数据框变成array类型
df.values

link:numpy中的ndarray与pandas的Series和DataFrame之间的相互转换_Bob Liu的程序人生-CSDN博客

(5)表的连接

link:pd.concat()和pd.merge()_万里里的博客-CSDN博客

import pandas as pd
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],'B': ['B0', 'B1', 'B2', 'B3'],'C': ['C0', 'C1', 'C2', 'C3'],'D': ['D0', 'D1', 'D2', 'D3'],'E': ['E0', 'E1', 'E2', 'E3']},index=[1,2,3,4])
print(df1)
'''
    A   B   C   D   E
1  A0  B0  C0  D0  E0
2  A1  B1  C1  D1  E1
3  A2  B2  C2  D2  E2
4  A3  B3  C3  D3  E3
'''
df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],'B': ['B4', 'B5', 'B6', 'B7'],'C': ['C4', 'C5', 'C6', 'C7'],'D': ['D4', 'D5', 'D6', 'D7']},index=[4, 5, 6, 7])
print(df2)
'''
    A   B   C   D
4  A4  B4  C4  D4
5  A5  B5  C5  D5
6  A6  B6  C6  D6
7  A7  B7  C7  D7
'''
data = pd.concat([df1,df2])  #默认上下直接拼接
print("竖索引的并:\n",data)
'''
    A   B   C   D    E
1  A0  B0  C0  D0   E0
2  A1  B1  C1  D1   E1
3  A2  B2  C2  D2   E2
4  A3  B3  C3  D3   E3
4  A4  B4  C4  D4  NaN
5  A5  B5  C5  D5  NaN
6  A6  B6  C6  D6  NaN
7  A7  B7  C7  D7  NaN
'''
data = pd.concat([df1,df2],join='inner')  #默认上下直接拼接
print("竖索引的交:\n",data)
'''
    A   B   C   D
1  A0  B0  C0  D0
2  A1  B1  C1  D1
3  A2  B2  C2  D2
4  A3  B3  C3  D3
4  A4  B4  C4  D4
5  A5  B5  C5  D5
6  A6  B6  C6  D6
7  A7  B7  C7  D7
'''
data = pd.concat([df1,df2],join='outer')  #默认上下直接拼接
print("竖索引的并:\n",data)
'''
    A   B   C   D    E
1  A0  B0  C0  D0   E0
2  A1  B1  C1  D1   E1
3  A2  B2  C2  D2   E2
4  A3  B3  C3  D3   E3
4  A4  B4  C4  D4  NaN
5  A5  B5  C5  D5  NaN
6  A6  B6  C6  D6  NaN
7  A7  B7  C7  D7  NaN
'''
data = pd.concat([df1,df2],axis=1)  #左右 1隔开俩 一边一个
print("横索引的并:\n",data)
'''
     A    B    C    D    E    A    B    C    D
1   A0   B0   C0   D0   E0  NaN  NaN  NaN  NaN
2   A1   B1   C1   D1   E1  NaN  NaN  NaN  NaN
3   A2   B2   C2   D2   E2  NaN  NaN  NaN  NaN
4   A3   B3   C3   D3   E3   A4   B4   C4   D4
5  NaN  NaN  NaN  NaN  NaN   A5   B5   C5   D5
6  NaN  NaN  NaN  NaN  NaN   A6   B6   C6   D6
7  NaN  NaN  NaN  NaN  NaN   A7   B7   C7   D7
'''
data = pd.concat([df1,df2],join='inner',axis=1)
print("横索引的交:\n",data)
'''
    A   B   C   D   E   A   B   C   D
4  A3  B3  C3  D3  E3  A4  B4  C4  D4
'''
data = pd.concat([df1,df2],join='outer',axis=1)
print("横索引的并:\n",data)
'''
     A    B    C    D    E    A    B    C    D
1   A0   B0   C0   D0   E0  NaN  NaN  NaN  NaN
2   A1   B1   C1   D1   E1  NaN  NaN  NaN  NaN
3   A2   B2   C2   D2   E2  NaN  NaN  NaN  NaN
4   A3   B3   C3   D3   E3   A4   B4   C4   D4
5  NaN  NaN  NaN  NaN  NaN   A5   B5   C5   D5
6  NaN  NaN  NaN  NaN  NaN   A6   B6   C6   D6
7  NaN  NaN  NaN  NaN  NaN   A7   B7   C7   D7
'''
# ==========merge===============================================
data = pd.merge(df1,df2,how='inner')
print('相交列的交:\n',data)
'''
Empty DataFrame
Columns: [A, B, C, D, E]
Index: []
'''
# 分析结果:df1 df2相交的列为ABCD,但是它们两个ABCD列的值,都不相等,所以相交列的交为空
df2 = pd.DataFrame({'A': ['A1', 'A5', 'A6', 'A7'],'B': ['B1', 'B0', 'B6', 'B7'],'C': ['C4', 'C5', 'C6', 'C7'],'D': ['D4', 'D5', 'D6', 'D7']},index=[4, 5, 6, 7])
'''
df1:
    A   B   C   D   E
1  A0  B0  C0  D0  E0
2  A1  B1  C1  D1  E1
3  A2  B2  C2  D2  E2
4  A3  B3  C3  D3  E3
df2:
    A   B   C   D
4  A1  B1  C4  D4
5  A5  B0  C5  D5
6  A6  B6  C6  D6
7  A7  B7  C7  D7
'''
data = pd.merge(df1,df2,how='inner',on='A')
print("A列的交:\n",data)
'''
    A B_x C_x D_x   E B_y C_y D_y
0  A1  B1  C1  D1  E1  B1  C4  D4
'''
data = pd.merge(df1,df2,how='outer')
print("相交列的并:\n",data)
'''
    A   B   C   D    E
0  A0  B0  C0  D0   E0
1  A1  B1  C1  D1   E1
2  A2  B2  C2  D2   E2
3  A3  B3  C3  D3   E3
4  A4  B4  C4  D4  NaN
5  A5  B5  C5  D5  NaN
6  A6  B6  C6  D6  NaN
7  A7  B7  C7  D7  NaN
'''

data = pd.merge(df1,df2,how='outer',on='A')
print("A列的并:\n",data)
'''
    A  B_x  C_x  D_x    E  B_y  C_y  D_y
0  A0   B0   C0   D0   E0  NaN  NaN  NaN
1  A1   B1   C1   D1   E1   B1   C4   D4
2  A2   B2   C2   D2   E2  NaN  NaN  NaN
3  A3   B3   C3   D3   E3  NaN  NaN  NaN
4  A5  NaN  NaN  NaN  NaN   B0   C5   D5
5  A6  NaN  NaN  NaN  NaN   B6   C6   D6
6  A7  NaN  NaN  NaN  NaN   B7   C7   D7
'''

pd.contact()分上下连接和左右连接。同时还有取交集还是并集之分。比较的横或者纵索引的交并。

读成:横索引的并、横索引的交、纵索引的并、纵索引的交;

横纵索引的比较用axis指定

并还是交用outer和inner指定

pd.merge()也有交还是并,与contact最大的不同,在于日常使用merge()时会指定列名,未指定的话就默认比较,相交的列名。

在列名上找交或者并,没有指定列名。

读成:某某列的交,某某列的并

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值