Pandas对于CSV的简单操作
Pandas对于CSV的简单操作
最近在研究pandas对于csv文件的读取以及一些操作,网上的信息比较乱,写篇博客记录一下,毕竟自己写的才是最适合自己的用法.
首先我们应该都知道,pandas是一个用于数据分析,以及可以简单的绘图的一个python模块,本文并不是从零开始介绍这个模块,而是从我最近几天的使用来说的,从我用到的,最实用的那一部分说起.
首先,导入模块,这是必须的
import pandas as pd # 不要问我为什么要简称pd,大家都是这么做的,惯例,日常习惯好伐
import numpy as np
导入模块之后,我们就需要导入CSV文件,对,就是这么直奔主题,我这里不会讲什么series,也不会讲什么numpy数组,那些理论都不实用,我们就是要直接用,碰到问题再去解决.
读取csv文件的方法叫做
read_csv() 读取csv文件
df = pd.read_csv(filename,usecols=[要取的列名])
'''
read_csv的参数很多,有需求可以去查,因为我这里只是用到了要取到的列名,所以只写这一个,当然你可以写encoding="utf-8"来防止读取时候中文有乱码,或者等等之类的.
filename可以是当前文件夹里的文件名,或者是从根目录开始的一个路径,比如下例
usecols = [] 这里写要取的列名,如果不想取csv文件的全部列的话,就在这里设定,如果要取全文件可以不写.
'''
df = pd.read_csv('111.csv',usecols=['teacher','student'])
# 或者
df = pd.read_csv(r'D:\PythonStudying\111.csv',usecols=['teacher','student'])
# 两种读取方法都可以
# 对于一些数据量比较大的表格,我们可以选择用分块读取的方式来加快读取的速度以及减小系统的内存占用,这种读取方法借鉴于
https://blog.csdn.net/jambone/article/details/78769421
reader = pd.read_csv(filename, encoding="utf_8_sig", sep=',', iterator=True, usecols=line)
i = 0
while True:
try:
start2 = time.clock()
df = reader.get_chunk(1000000)
i = i + 1
end2 = time.clock()
# 每次循环结束时间
print('{} 秒: completed {} rows'.format(end2 - start2, i * 1000000))
except StopIteration:
print("Iteration is stopped.")
# 循环结束退出
break
然后,我们成功读取到之后,可以尝试用print(df)
来查看取到的csv列表
合并一个表中的不同列(单纯的合并,不做计算)
我们可以把读取到的csv表中的不同列合并成一列,其实也不算是合并,只能说是新的生成.
df["User"] = df["ClientID"].map(str)+df["UserID"].map(str)+df["phone"].map(str)
# 我们知道,只有字符串或者数值之间才能直接相加,所以我们要清楚的知道自己合并的这几列是什么格式的数据,如果当做字符串合并,那么就在每列结尾用map(str),如果要用数值相加,那么要用map(float)或者map(int)
# 这样合并原来的列并不会消失,只是会形成一个新列,默认在整个表的尾部,也就是最后一列,如果需要把原列删除再调用drop即可
apply() 一个表中的不同列,行之间做计算
tablename['time'] = df.apply(
lambda x: x['second']+x['minute']*60),
axis=1)
# 上面语句的意思就是,把名为second的列的值加上名为minute的列的值乘以60,作为一个叫做time的新列
# lambda 是匿名函数的意思,即传入一个x参数,返回的是冒号后面的式子的结果
# axis的参数和上文相同,0代表对行操作,1代表对列操作
# 要注意一点,apply是一个非常耗时的操作,数据量较大的话要慎用这个函数,我曾经测试过,60W行的csv表,对列做操作,用apply耗时20s,直接用列操作只用时5s,所以要注意
# 直接用列之间操作如下:
tablename['time'] = tablename['second']+tablename['minute']*60
drop() 删除表中列,行
# 删除某一列或者某一行,用drop
df.drop(columns=line_name,axis)
# 第一个参数columns即为你要删除的列或者行的名字,可以是一个值,也可以是一个队列多个值
# 第二个参数axis则是你要删除的是列还是行:
# axis=0,就是删除名为line_name的行
# axis=1,就是删除名为line_name的列
merge() 合并两个表
pd.merge(table1, table2, on=line_name,how = )
# merge是合并函数,前面两个参数即为要合并的两个表的名称
# 第三个参数on,是按照某一列或者某些列来合并表,比如on=['student','teacher'],就是同时按照这两列来合并表,作为key
# 第四个参数how,就是合并的方式,可填参数为inner内联,left左连接,right右连接,outer全连接,这里解释一下这几种合并方式的区别
1. inner 内联,即两个表以key为关键字合并之后,如果某个其余列有空的数值,那么这一列将不会保留,即内联方式只会保留两个表相对于key都有数据的行,或者列,有空数据都不会保留
2. left 左连接,即左边的所有数据都会保留,也就是table1的数据,右表如果有空数据,会自动填入null
3. right 右连接,原理同左连接,换个方向而已
4. 全连接,即两边表的所有数据都会保留,如果有空数据都会自动填入null
# 实例:
pd.merge(df1, df2, on=["student","teacher"],how = "outer")
to_csv() 创建新表
# 当我们读入一些csv表,然后对他们操作完毕之后,我们就需要把处理之后的数据输出,重新生成一个表,就要用到这个函数
df.to_csv(filename, encoding="utf_8_sig")
# 第一个参数就是你要生成的文件名,只写一个文件名的话会默认生成到你的py文件所在的目录,当然可以写一个从根目录开始的路径,注意要加引号
# 第二个参数一定要加,这个参数可以避免重新生成的csv表里面的中文出现乱码
这都是对csv表的基本操作,还在学习当中,持续更新ing........
Pandas对于CSV的简单操作的更多相关文章
- Python中关于csv的简单操作
Python中关于csv的简单操作 CSV操作简单,直接import csv即可, 主要使用reader和pandas 1 reader的简单使用 csv.reader("1.csv&quo ...
- pandas 写csv 操作
pandas 写csv 操作 def show_history(self): df = pd.DataFrame() df['Time'] = pd.Series(self.time_hist) df ...
- Linux下MySQL的简单操作
Linux下MySQL的简单操作 更改mysql数据库root的密码 首次进入数据库是不用密码的: [root@localhost ~]# /usr/local/mysql/bin/mysql -ur ...
- 小白学 Python 数据分析(6):Pandas (五)基础操作(2)数据选择
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- csv的读写操作
cvs简介: CSV 全称 Comma-Separated Values,中文叫逗号分隔值或字符分隔值,它以纯文本形式存储表格数据(数字和文本),其本质就是一个字符序列,可以由任意数目的记录组成,记录 ...
- [Python]-pandas模块-CSV文件读写
Pandas 即Python Data Analysis Library,是为了解决数据分析而创建的第三方工具,它不仅提供了丰富的数据模型,而且支持多种文件格式处理,包括CSV.HDF5.HTML 等 ...
- x01.MagicCube: 简单操作
看最强大脑,发现魔方还是比较好玩的,便买了一个,对照七步还原法,居然也能成功还原. 为什么不写一个魔方程序呢?在网上找了找,略作修改,进行简单操作,还是不错的,其操作代码如下: protected o ...
- js简单操作Cookie
贴一段js简单操作Cookie的代码: //获取指定名称的cookie的值 function getCookie(objName) { var arrStr = document.cookie.spl ...
- GitHub学习心得之 简单操作
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 前言 本文对Github的基本操作进行了总结, 主要基于以下文章: http://gitre ...
随机推荐
- sql 保存,性能高
INSERT INTO TABLE( Id, Name) VALUES ( 4, 'A'), ( 5, 'P' ),( 6, 'U') ; INSERT INTO TABLE( Id, Name) S ...
- kafka 入门
李克华 云计算高级群: 292870151 195907286 交流:Hadoop.NoSQL.分布式.lucene.solr.nutch kafka入门:简介.使用场景.设计原理.主要配置及集群搭 ...
- windows域控导出hash
#mimikaz导入域内所有hash mimikatz.exe privilege::debug "lsadump::dcsync /domain:test.local /all /csv ...
- cvErode和cvDilate腐蚀和膨胀函数
Erode腐蚀,Dilate膨胀,这两个形态学函数总是成对出现,前者可以消除较小独点如噪音,后者可以使不连通的图像合并成块. void cvErode( const CvArr* src, CvArr ...
- mysql 远程连接报错
./mysql -uzhu -p -h192.168.1.200 ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.200 ...
- sslforfree的证书合并成类似于certbot的ssl证书文件
之前的證書都是通過 certbot的命令生成的,但是目前一個服務器太多個網站,太多個ssl證書,證書過期之後,目前是 通過 ssl for free 網站再生成新的 ssl證書,再次更新證書週期 Le ...
- [JZOJ2865]【集训队互测 2012】Attack
题目 题目大意 平面上有一堆带权值的点.两种操作:交换两个点的权值,查找一个矩形的第\(k\)小 \(N<=60000\) \(M<=10000\) \(10000ms\) 思考历程&am ...
- MDK(KEIL)使用Astyle格式化代码
关于Astyle Astyle 的全称是Artistic Style的简称,是一个开源的源代码格式化工具,可以对C,C++,C#以及Java等编程语言的源代码进行缩进.格式化.美化. Home Pag ...
- 《DSP using MATLAB》Problem 8.40
代码: function [wpLP, wsLP, alpha] = bs2lpfre(wpbs, wsbs) % Band-edge frequency conversion from bandst ...
- <Python基础>字典的基本操作
''' 小知识 1.字典的键只能是不可变数据类型:int 元组 bool str(可哈希) 字典查找数据会使用二分查找,会先用哈希表将键转化为数字然后进行查找 ''' s = { "name ...