# -*-coding:utf-8-*-

from pandas import DataFrame

import pandas as pd

import numpy as np

"""

获取行列数据

"""

df = DataFrame(np.random.rand(4, 5), columns=['A', 'B', 'C', 'D', 'E'])

print df

print

df['col_sum'] = df.apply(lambda x: x.sum(), axis=1) # 横向求和,axis=1表示横向

df.loc['row_sum'] = df.apply(lambda x: x.sum()) # loc获取一整列的数据,对一列数据进行求和

print df

print

dd = pd.DataFrame(np.arange(0, 60, 2).reshape(10, 3), columns=list('abc'))

# loc获取一整列的数据

print dd

print

print dd.loc[0:len(dd), 'a']

print

print dd.loc[0:3, ['a', 'b']]

print

print dd.loc[[1, 5], ['b', 'c']]

print '--------------------------------------'

# iloc获取某个位置的元素,或者某个区域的元素

print dd.iloc[1, 1]

print dd.iloc[0:3, [0, 1]]

print dd.iloc[[0, 3, 5], 0:2]

print '--------------------------------------'

"""

去重函数 drop_duplicates()

"""

from pandas import Series, DataFrame

data = DataFrame({'k': [1, 1, 2, 2]})

print data

print type(data) #

print

isduplicates = data.duplicated() # duplicated()判断是否是重复的项

print isduplicates

print type(isduplicates) #

print

data = data.drop_duplicates() # drop_duplicates()移除重复的项

print data

print type(data) #

print '-------------------------------------------------'

"""

Pandas.DataFrame 读取、合并、修改列数据、新增列、分组、分组数据计算

"""

import numpy as np

import pandas as pd

from pandas import Series, DataFrame

from datetime import timedelta, datetime

from dateutil.parser import parse

"""

读写csv文件

"""

# 读取csv文件

df = pd.read_csv('data_english.csv', encoding='gbk')

# print df

print type(df) #

print df.columns # 所有列的标签

print df.index # 所有行的标签

print df.book_id # 选择某一列,可以使用df.book_id ,也可以使用df['book_id']

print type(df.book_id) #

print np.array(df.book_id) # 将Series转换为numpy的darray格式

print '---------------------------------------------------------'

# 写入csv文件

# df.to_csv('dat.csv', index=False, encoding='gbk') # index=False表示不把index写入文件

"""

行列的选取

"""

print df.read_name # 选择一列

print df[:3] # 选择前3行

print df.loc[:, ('read_num', 'read_name')] # df.loc[行标签,列标签]

print df.iloc[2, 4] # df.iloc[行位置,列位置]

print df.ix[2, 4] # df.ix[行位置或行标签,列位置或列标签]

# bool判断

print df[df.read_name == u'山问萍'].head() # 获取符合条件的行列

print df[(df.read_name == u'山问萍') & (df.book == u'植物生理学实验教程')] # 多个条件

print '----------------------------------------------'

"""

两个df相merge

"""

# pd.concat([df1, df2]) # 两个df的column都一样,index不重复(增加列)

# pd.concat([df1, df2], axis=1) # 两个df的index都一样,column不重复(增加行)

"""

增加列,删除列,重命名某一列

"""

# df['new_col'] = xxx # 直接增加一列,加到最后一列

# df.insert[1, 'new_col'] # 使用df.insert 插入一列,可以设置这一列的位置

# del df['one_col'] # 直接使用del进行删除,删除某一列

# df = df.rename(columns={'old_name': 'new_name'}) # 重命名某一列

# df = df.rename(columns={'old_name': 'new_name'}, inplace=True)

# print '--------------------------------------------------------'

"""

apply(): 对dataframe的内容进行批量处理,比循环更快

map(),

agg():对分组的结果再分别进行不同的操作

"""

"""

数据合并

"""

import numpy as np

import pandas as pd

data1 = pd.DataFrame({'level': ['a', 'b', 'c', 'd'], 'number': [1, 3, 5, 7]})

data2 = pd.DataFrame({'level': ['a', 'b', 'c', 'e'], 'number': [2, 3, 4, 5]})

print data1

print data2

print pd.merge(data1, data2, on='level') # 合并,内连接

data3 = pd.DataFrame({'level1': ['a', 'b', 'c', 'd'], 'number': [1, 3, 5, 7]})

data4 = pd.DataFrame({'level2': ['a', 'b', 'c', 'e'], 'number': [2, 3, 4, 5]})

print pd.merge(data3, data4, left_on='level1', right_on='level2')

print pd.merge(data3, data4, left_on='level1', right_on='level2', how='left')

print '----------------------------------------'

"""

merge参数说明:

left和right:两个不同的DataFrame

how:合并的方式-->inner内连接,right右连接,left左连接,outer外连接,默认为inner

on:用于连接的列索引名称,必须存在于两个DataFrame对象中

left_on:

right_on:

left_index:

right_index:

sort:默认为True,将合并的数据进行排序

suffixes:当列名相同时,合并后,自动添加后缀名称,默认为(_x, _y)

copy:默认为True,复制数据结构

indicator:

"""

"""

重叠数据合并

"""

data3 = pd.DataFrame({'level': ['a', 'b', 'c', 'd'], 'number1': [1, 3, 5, np.nan]})

data4 = pd.DataFrame({'level': ['a', 'b', 'c', 'e'], 'number2': [2, np.nan, 4, 5]})

print data3.combine_first(data4) # 相同标签下的内容优先显示data3的内容,如果某个数据缺失,就用另外一个数据补上

"""

数据重塑和轴向旋转

数据重塑:reshape()

轴向旋转:unstack(),stack()

"""

data = pd.DataFrame(np.arange(12).reshape(3, 4), columns=['a', 'b', 'c', 'd'], index=['wang', 'li', 'zhang'])

print data

print data.unstack() # 轴向旋转

print '---------------------------------'

"""

数据转换

"""

data = pd.DataFrame({'a': [1, 3, 3, 4], 'b': [1, 3, 3, 5]})

print data

print data.duplicated() # 判断是否重复行

print data.drop_duplicates() # 去除重复行

"""

替换值

"""

data = pd.DataFrame({'a': [1, 3, 3, 4], 'b': [1, 3, 3, 5]})

print data.replace(1, 2) # 凡是数据1,全部替换成数据2

print data.replace([1, 4], np.nan) # 凡是数据1,4,全部替换成np.nan

"""

数据分段

"""

data = [11, 15, 18, 20, 25, 26, 27, 24]

bins = [15, 20, 25]

print data

print pd.cut(data, bins)

python数据清洗csv_Pandas 数据处理,数据清洗详解相关推荐

  1. python编程入门与案例详解-quot;Python小屋”免费资源汇总(截至2018年11月28日)...

    原标题:"Python小屋"免费资源汇总(截至2018年11月28日) 为方便广大Python爱好者查阅和学习,特整理汇总微信公众号"Python小屋"开通29 ...

  2. python的爱心曲线公式_六行python代码的爱心曲线详解

    前些日子在做绩效体系的时候,遇到了一件囧事,居然忘记怎样在Excel上拟合正态分布了,尽管在第二天重新拾起了Excel中那几个常见的函数和图像的做法,还是十分的惭愧.实际上,当时有效偏颇了,忽略了问题 ...

  3. python编程语法大全-Python编程入门——基础语法详解

    今天小编给大家带来Python编程入门--基础语法详解. 关于怎么快速学python,可以加下小编的python学习群:611+530+101,不管你是小白还是大牛,小编我都欢迎,不定期分享干货 每天 ...

  4. python编程语法-Python编程入门——基础语法详解

    今天小编给大家带来Python编程入门--基础语法详解. 一.基本概念 1.内置的变量类型: Python是有变量类型的,而且会强制检查变量类型.内置的变量类型有如下几种: #浮点 float_num ...

  5. python编程if语法-Python编程入门基础语法详解经典

    原标题:Python编程入门基础语法详解经典 一.基本概念 1.内置的变量类型: Python是有变量类型的,而且会强制检查变量类型.内置的变量类型有如下几种: #浮点 float_number = ...

  6. python编程语法-Python编程入门——基础语法详解(经典)

    今天小编给大家带来Python编程入门--基础语法详解.温馨提示: 亮点在最后! 在这里还是要推荐下我自己建的Python开发学习群:301056051,群里都是学Python开发的,如果你正在学习P ...

  7. 用python绘制漂亮的图形-用python绘制图形的实例详解

    1.环境系统:windows10 python版本:python3.6.1 使用的库:matplotlib,numpy 2.numpy库产生随机数几种方法import numpy as npnumpy ...

  8. python怎么导入文件-Python文件如何引入?详解引入Python文件步骤

    python基本语法--引入Python文件 1.新建python文件 :在同目录lib下创建mylib.py和loadlib.py两个文件 2.在mylib.py文件中创建一个Hello的类 并且给 ...

  9. python怎么画条形图-python绘制条形图方法代码详解

    1.首先要绘制一个简单的条形图 import numpy as np import matplotlib.pyplot as plt from matplotlib import mlab from ...

最新文章

  1. mysql 5.7重新设置密码_mysql 5.7 安装及修改/重置密码
  2. 02_混淆矩阵、准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F值(F-Measure) +Roc曲线和PR曲线+sklearn中分类模型评估API+ 自己补充整理
  3. 记录工作中遇到的问题
  4. 用拖拉实现设备驱动配置(EsayHMI最新驱动配置方式)
  5. 每一个都能笑抽,39个奇葩代码注释
  6. 2018 ngChina —— “跨平台”版块简介
  7. 如果身价千万,你还会事无巨细亲力亲为吗
  8. 吴恩达课程及视频笔记汇总
  9. kafka 消费者消息确认_Kafka整体架构图解
  10. 【Ural】1519. Formula 1
  11. 计算机内存地址对齐,深入理解内存对齐
  12. 多元统计分析最短距离法_多元统计分析复习整理
  13. 2021最新显卡天梯图,2021显卡天梯排行榜
  14. ISO-IEC 系列 国际标准组织官方标准文档 下载地址直达
  15. 【时空智友】“采购入库单” 增加导入Excel模板的方式
  16. 谷歌pixel3axl开发者模式_谷歌推出新一代安卓系统“Android 10”
  17. [读书笔记]固定收益证券 第三版 Fixed income securities
  18. 如何准备机器学习工程师的面试 ?
  19. 使用Navicat快速复制所有表的表名或字段名
  20. chrome扩展程序安装_如何从Chrome网上应用店外部安装扩展程序

热门文章

  1. 如何在React Native中创建精美的动画加载器
  2. 没有事情,错误1503_为什么依靠用户报告错误是您做过的最愚蠢的事情
  3. java中的纸牌游戏_Java中的宾果纸牌游戏
  4. macOS修改Homebrew镜像
  5. Python中多线程和多处理的初学者指南
  6. 为ie和chrome FF单独设置样式的“条件注释法”、“类内属性前缀法”、“选择器前缀法”、实现方法 案例(推荐)
  7. java面试题_2020年1-6月份Java面试题总结,20多类1100道面试题含答案解析
  8. 浏览器怎么扫描二维码_让你的chrome浏览器开启自动翻译,浏览任何语言不是梦...
  9. Eigen部分基本使用方法
  10. oracle导出客户机使用us7a,导出已复制的文件系统 - Oracle® ZFS Storage Appliance 管理指南,发行版 OS8.6.0...