Python数据处理方法总结
Python是一门非常简洁的语言,能够使用简单的代码实现非常丰富的功能。在数据处理方面,常用的python包有pandas和numpy。本次总结了基于参加一个机器学习比赛进行,主要是预测用户银行卡一周之后的余额。整个过程分为数据预处理阶段和预测阶段,重点介绍数据预处理阶段,这里涉及很多pandas的功能使用,总结一下便于以后查阅。
1.读取和保存txt文件
新建dataframe的方法:
data = {'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen', 'Hangzhou', 'Chongqing'],
'year': [2016,2016,2015,2017,2016, 2016], 'population': [2100, 2300, 1000, 700, 500, 500]}
frame = pd.DataFrame(data, columns = ['year', 'city', 'population', 'debt'])
读取:
columns_trx = ['id','trx','cardId','date','twog','name','category','deal']#和文件中的列数统一
trainTrx = pd.DataFrame(pd.read_csv('trainTrx .txt', header = None, names = columns_trx, sep=','))
保存:
trainTrx .to_csv(r'predict.txt', header=None, index=None, sep=',')
2.同一列名称相同的数据取出第一行和最后一行
# 筛选出相同id第一行的数据
y1 = bal_value.drop_duplicates('id', inplace = False)
# 筛选出相同id最后一行的数据
y2 = bal_value.drop_duplicates('id', 'last', inplace = False)
3.筛选出某列存在空值的行数据
y1 = x[x.deal.isnull().values==True]#x为dataframe,deal为dataframe中的一列
4.按照编码表替换数据
dataCode = {'100':'中国','2':'世界'}#编码表
dataFrame = pd.DataFrame({'A':['中国',1,'中国'],'B':['世界',5,6]})#待替换的数据集
for key in dataCode:
dataFrame['A'] = dataFrame['A'].replace(dataCode[key],key)
print dataFrame
5.List列表数据类型的替换
absErrorList = map(abs, errorList)#将errorList列表的值全部替换为绝对值,abs可以是str等其他类型
5.List数值获取唯一值
使用sorted(set(countyId))获取唯一值
6.获取DataFrame某列的唯一值
onlyValue = trainTrx['id'].unique()
7.获取两个DataFrame某列的互异值
differValue = list(set(map(str,trainTrx['id'].unique())) ^ set(map(str,trainTrx1['id'].unique())))
8.获取DataFrame前几行数据或后几行数据
前几行:trainTrx.head()#默认五行
trainTrx.head(10)
后几行:trainTrx.tail()#默认五行
trainTrx.tail(10)
9.DataFrame重新构建索引
trainTrx = trainTrx.set_index('id')
10.DataFrame按照指定列排序按照指定列求和
trainTrx = trainTrx .groupby(by=['id','category'])['deal'].sum()
11.查看pandas版本
pd.show_versions()#考虑到pandas的版本更新之后,相应的函数功能会发生变化。
12.删除dataframe符合某个条件的行
删除指定条件的行:train = train.drop(train[train[target] == 0].index)
删除指定条件的列(直接del):del train['name']
13.获取DataFrame满足一定行或列数值条件下的值
(1)推荐参考博文:https://blog.csdn.net/GeekLeee/article/details/75268762,写的很详细
>>> import pandas as pd
>>> import numpy as np
>>> from pandas import Series, DataFrame
>>> df = DataFrame({'name':['a','a','b','b'],'classes':[1,2,3,4],'price':[11,22,33,44]})
(2)DataFrame取出满足多个条件的数值
参考网址:https://jingyan.baidu.com/article/0eb457e508b6d303f0a90572.html
https://blog.csdn.net/GeekLeee/article/details/75268762
根据index和columns取值
>>> s = df.loc[0,'price']
>>> s
11
根据同行的columns的值取同行的另一个columns的值
>>> sex = df.loc[(df.classes==1)&(df.name=='a'),'price']
>>> sex
0 11
>>> sex = df.loc[(df.classes==1)&(df.name=='a'),'price'].values[0]
>>> sex
11
13.统计出一个list中每个相同元素的下标
from collections import defaultdict
list_3 = []
list_1 = ['2', '5', '6', '11', '2', '535', '2', '2' ]
d = defaultdict(list)
for k,va in [(v,i) for i,v in enumerate(list_1)]:
d[k].append(va)
print d
14.对list列表对所有元素进行计算
求幂运算
predcitArray = np.array(predictValue)
realArray = np.array(realValue)
errorArray = predcitArray - realArray
errorSqureArray = np.power(errorArray, 2) # power函数
求对数运算(使用lambda表达式求出对数)
g = lambda x: math.log(x) #求对数
logY = [g(x) for x in y]
15.DataFrame和Series用法的对比总结
(1)新建dataframe
参考网址:https://blog.csdn.net/flyfrommath/article/details/68069584
(2)将list的值转为dataframe
logYDict = {'popNumDensity':yTrain}
logYDataFrame = pd.DataFrame(logYDict)
y = logYDataFrame
16.Python画图
(1)单个figure绘制单个或多个图
fig1 = plt.figure()
ax1 = fig1.add_subplot(211)
ax1.plot(x, x ** 3)
ax2.plot(x, np.log(x)
ax2 = fig1.add_subplot(212)
fig2 = plt.figure()
ax3 = fig2.add_subplot(121)
ax3.plot(x, np.sqrt(x))
ax4 = fig2.add_subplot(122)
ax4.plot(x, x ** 2)
plt.show()
(2)多个figure绘制单个或多个图
(3)绘制折线图并为折线添加注记
总结的非常好的博文链接:https://www.jianshu.com/p/5ae17ace7984
17.Python计算:
(1)加、减、乘、除、取整、取余
参考网址:https://blog.csdn.net/u014647208/article/details/53368244
(2)字符串截取
参考网址:https://www.cnblogs.com/xunbu7/p/8074417.html
程序:
str = ‘0123456789’
print str[0:3] #截取第一位到第三位的字符
print str[:] #截取字符串的全部字符
print str[6:] #截取第七个字符到结尾
print str[:-3] #截取从头开始到倒数第三个字符之前
print str[2] #截取第三个字符
print str[-1] #截取倒数第一个字符
print str[::-1] #创造一个与原字符串顺序相反的字符串
print str[-3:-1] #截取倒数第三位与倒数第一位之前的字符
print str[-3:] #截取倒数第三位到结尾
print str[:-5:-3] #逆序截取
结果:
012
0123456789
6789
0123456
2
9
9876543210
78
789
96
18.python实现文件名称批量修改
参考:http://www.runoob.com/python/os-rename.html
19.python实现删除指定字符串
参考:https://www.cnblogs.com/2bjiujiu/p/7257744.html
20.sublime下配置python调试环境
参考:
在sublime中安装相关插件配置python的调试环境
https://blog.csdn.net/qq_33505303/article/details/78550015
pdb命令的使用方式参考:
https://blog.csdn.net/LaputaFallen/article/details/78567099
https://www.jianshu.com/p/21a30d39c5f0
21 python打印中文乱码问题的解决
常规问题参考这篇博客:https://blog.csdn.net/chinwuforwork/article/details/52535643
上面的博客解决不了的问题很有可能是自己选择的编码方式是存在问题的,可以参考这篇博客来进行修改:
https://www.cnblogs.com/apple2016/p/5849412.html,主要针对是编码的形式。
22. pycharm安装教程
pycharm是一款节约生命的python开发idea,在官网下载最新的免费版本安装即可。
安装后使用的python版本的具体的配置可以参考以下的博文:https://blog.csdn.net/guifei010/article/details/79210034
23. python数组的使用
(1)一般情况下,python新建数组只需要array = [] 就可以构建一个数组(array为数组名称),但是这个array是需要直接命名的,当我们需要批量的为数组命名的时候,例如array1 = [], array2 = [], array3 = [].....等,如何直接通过程序为数组命名之后直接初始化,避免大量的代码。目前这个问题还没能很好的去解决。
(2)python构建hashmap结构
(3)在使用python的时候会有32位和64位的区别,64位系统可以使用更多的内存。但是部分软件只支持32位的python使用,如何在系统上同时使用32位和64位的python,参考博文https://www.cnblogs.com/lyy-totoro/p/6295636.html进行配置实现
24. pandas.DataFrame中删除包涵特定字符串所在的行
参考:https://blog.csdn.net/htbeker/article/details/79645651
25. python shift()
shift函数对数据进行移动操作,例如df.shift(1)表示将数据整体向上移动一位。
参考:https://blog.csdn.net/qq_18433441/article/details/56665931
机器学习方法的使用
一、DataFrame对行列相关的操作
二、DataFrame对文件相关的操作
三、DataFrame对字符串相关的操作
四、DataFrame与Numpy
五、Python与机器学习
六、Python画图
Python数据处理方法总结相关推荐
- python数据处理方法
python数据处理中常用的运算方法 矩阵转置-DataFrame df=pd.DataFrame(df.values.T, index=df.columns, columns=df.index) 矩 ...
- python数据处理方法汇总
工作中我们一般的数据形式都是以数据框形式存在的,不管从excel类似表格或者数据库中提取的数据,你都愿意更像excel那样直接操作,这句话主要是针对我来说的,哈哈,我就是先做了两年的excel,然后再 ...
- python 取反_自从用了这招pandas 空数据处理方法,python编程速度提升了不少
今天为大家带来的内容是:自从用了这招pandas 空数据处理方法,python编程速度提升了不少 文章内容主要介绍了pandas 空数据处理方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工 ...
- Python表格数据处理方法
Python表格数据处理方法 记录了一些机器学习与数模的过程中常用到的代码 数据读写 import numpy as np import pandas as pd excel数据(.xlsx) dat ...
- python 矢量数据融合代码_在ArcGIS下基于Python的矢量数据处理方法
在 ArcGIS 下基于 Python 的矢量数据处理方法 林璐 王爽 李海泉 侯兴泽 马鹏刚 [摘 要] 在 ArcGIS 中地理处理可以通过 Python 脚本语言来具体实现.通过 Python ...
- 《Python数据处理》7.2.4笔记:寻找唯一键的源码修改——由于zip方法
<Python数据处理>7.2.4笔记:寻找唯一键的源码修改--由于zip方法 一.原因:zip方法 二.修改后 一.原因:zip方法 参考<python中使用zip函数出现> ...
- python txt文件处理软件,对python .txt文件读取及数据处理方法总结
1.处理包含数据的文件 最近利用python读取txt文件时遇到了一个小问题,就是在计算两个np.narray()类型的数组时,出现了以下错误: 作为一个python新手,遇到这个问题后花费了挺多时间 ...
- insert into 多条数据_最全总结 | 聊聊 Python 数据处理全家桶(Sqlite篇)
点击上方"AirPython",选择"加为星标" 第一时间关注 Python 技术干货! 1. 前言 上篇文章 聊到 Python 处理 Mysql 数据库最常 ...
- python数据处理常用函数_pytorch中的自定义数据处理详解
pytorch在数据中采用Dataset的数据保存方式,需要继承data.Dataset类,如果需要自己处理数据的话,需要实现两个基本方法. :.getitem:返回一条数据或者一个样本,obj[in ...
最新文章
- Linux7-常用文件管理命令及系统变量基础
- HTML5 canvas 初级入门教程【转】
- SpringMVC+ZTree实现树形菜单权限配置
- pkill mysql_每天一个linux命令:kill命令
- visionpro定位不跟随图像_塑料薄膜缺陷之机器视觉定位检测
- mfc大观之四(串行保存)
- Xen Server 7.0 一直无法退出维护模式
- [转载] python 1
- Win32汇编——过程控制(进程调试和进程隐藏)
- 淘宝类目运营方法 怎么快速获取流量和销量
- Ajax学习笔记(1)
- 学习mescroll的下拉刷新、上拉加载
- 解决HP1010打印机在WIN7系统下驱动的问题
- correl函数相关系数大小意义_Excel使用Correl函数返回相关系数并确定属性关系的方法...
- vue-video-player 断点续播
- Linux 下压缩包解压后目录的权限问题
- 初学者之蚂蚁蜜蜂分类报错记录
- Excel表格之——某一列生成UUID
- Linux服务器搭建----Web服务器(apache)
- java 导出wps_java如何导出word和wps文档