IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 小黑数据科学成长笔记1 -> 正文阅读

[Python知识库]小黑数据科学成长笔记1

通过kaggle竞赛(GPS定位预测)的baseline1的学习,对本baseline用到的工具包以demo的形式进行整理:

1.pathlib

文件目录大致如下图所示:

在这里插入图片描述

pathlib import Path
path_data = Path('../input/google-smartphone-decimeter-challenge')
# 路径拼接
print('1.路径拼接结果:',path_data/'train')
# 非递归获取当前目录下的指定文件路径
three_csv_paths = path_data.glob('*.csv')
print('2.当前目录的csv文件目录:',list(three_csv_paths))
all_csv_path = path_data.rglob('*.csv')
print('3.5个所有目录下的csv文件:',list(all_csv_path)[:5])

输出结果:
1.路径拼接结果: …/input/google-smartphone-decimeter-challenge/train
2.当前目录的csv文件目录: [PosixPath(’…/input/google-smartphone-decimeter-challenge/sample_submission.csv’), PosixPath(’…/input/google-smartphone-decimeter-challenge/baseline_locations_train.csv’), PosixPath(’…/input/google-smartphone-decimeter-challenge/baseline_locations_test.csv’)]
3.5个所有目录下的csv文件: [PosixPath(’…/input/google-smartphone-decimeter-challenge/sample_submission.csv’), PosixPath(’…/input/google-smartphone-decimeter-challenge/baseline_locations_train.csv’), PosixPath(’…/input/google-smartphone-decimeter-challenge/baseline_locations_test.csv’), PosixPath(’…/input/google-smartphone-decimeter-challenge/metadata/constellation_type_mapping.csv’), PosixPath(’…/input/google-smartphone-decimeter-challenge/test/2021-04-29-US-MTV-2/SamsungS20Ultra/SamsungS20Ultra_derived.csv’)]

2. pandas.merge

(1) 表1与表2依靠列a进行合并

import pandas as pd
table1 = pd.DataFrame([[1,2],[3,4],[5,6]],columns = ['a','b'])
table2 = pd.DataFrame([[1,200],[1,40],[5,2]],columns = ['a','c'])
table1.merge(table2,on = 'a')

在这里插入图片描述
(2)表1以b列为基准,表2的c列为基准进行合并

# suffices为添加表1与表2中重复的列名添加后缀
table1.merge(table2,left_on = 'b',right_on='c',suffixes = ('_xiaohei1','_xiaohei2'))

在这里插入图片描述
(3)左(右)连接

table1.merge(table2,how = 'left',on = 'a')

在这里插入图片描述

3.pd.drop_duplicates(去重)

(1)以a列为基准去重

import pandas as pd
"""
params:
keep:
    ‘first’:保留第一个重复行
    ‘last’:保留第一个重复行
"""
table = pd.DataFrame([[1,2,5],[1,4,7],[5,4,7]],columns = ['a','b','c'])
table.drop_duplicates(['a'])

在这里插入图片描述
(2)以(b,c)列为基准去重

table.drop_duplicates(['b','c'])

在这里插入图片描述

4.pandas.map方法

import pandas as pd
data = pd.DataFrame([[23,28,'xiaohei'],[54,10,'xiaobai'],[19,12,'xiaobai']],columns = ['f_1','f_2','label'])
map_ = {'xiaohei':0,'xiaobai':1}
data['label'] = data['label'].map(map_)
data

在这里插入图片描述

5.pandas.groupby

(1)数据展示

import pandas as pd
data = pd.DataFrame([['a',1,2],['b',2,1],['b',1,1],['b',2,2],['a',3,2],['c',5,1]],columns = ['name','f_1','f_2'])
data

在这里插入图片描述
(2)常用操作函数

data.groupby('name').mean()

在这里插入图片描述

data.groupby(['name'])['f_1'].value_counts()

在这里插入图片描述
(3)自定义分组数据操作

groupby_columns = ['name']
values_columns = ['f_1','f_2']
function_names = ['sum','mean','size','min','max']
tmp = data.groupby(groupby_columns)[values_columns].agg(function_names).reset_index()
tmp

在这里插入图片描述

# 自定义列名
tmp_columns = groupby_columns.copy()
for i in values_columns:
    for j in function_names:
        tmp_columns.append('_'.join(groupby_columns) + '_' + i + '_' + j)
tmp.columns = tmp_columns
tmp

在这里插入图片描述

6.shift操作(便于提取时序特征)

(1) 基本操作

import pandas as pd
shift_list = [-1,1]
data = pd.DataFrame([['a',1,2],['b',2,1],['b',1,1],['b',2,2],['a',3,2],['c',5,1]],columns = ['name','f_1','f_2'])
data

在这里插入图片描述

# 向上平移1
data['f_1'] = data['f_1'].shift(1)
data

在这里插入图片描述

# 向下平移1
data['f_1'] = data['f_1'].shift(-1)
data

在这里插入图片描述
(2) 分组后的shift操作

shift_list = [-1,1]
shift_columns = ['f_1','f_2']
tmp_data = data.groupby(['name']).shift(1)
for column in shift_columns:
    data[column+'_shift1'] = tmp_data[column]
data.sort_values(['name'])

在这里插入图片描述
7.特征平滑操作(窗口平移滑动操作)
(1)简单操作

import pandas as pd
data1 = pd.DataFrame([[1],[23],[32],[10],[2],[3],[4]],columns = ['a'])
data1.rolling(3).mean()

在这里插入图片描述

data1.rolling(3,center = True).mean()

在这里插入图片描述
(2) 与groupby结合

import pandas as pd
data = pd.DataFrame([[1,2,3,2],[3,2,6,9],[1,2,5,3],[1,2,5,5],[3,2,9,19],[1,4,2,2]],columns = ['a','b','c','d'])
data

在这里插入图片描述

groupby_columns = ['a','b']
roll_columns = ['c','d']
window_list = [2,3]
# 对每个窗口大小
for i in window_list:
    temp = data.groupby(groupby_columns)[roll_columns].rolling(i).mean(center = True).reset_index()
    for col in roll_columns:
        data[col+'_roll_'+str(i)] = temp[col]
data.sort_values(['a','b'])

在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-03 11:08:04  更:2021-08-03 11:10:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:31:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码