文档章节

9-pandas导入导出数据

eddy_linux
 eddy_linux
发布于 2017/09/07 10:54
字数 973
阅读 30
收藏 0
点赞 0
评论 0
#encoding:utf8



'''
数据导入导出处理:
    索引和列名
    缺失值处理
    逐块读取数据
    保存数据到磁盘
    二进制数据
    其他格式:HDF5,Excel,JSON,SQL,NoSQL
'''

import numpy as np
import pandas as pd

#读取文件
'''
a,b,c,d,message
1,2,3,4,hello
5,6,7,8,world
9,10,11,12,foo
没有行索引
'''
print(pd.read_csv('data/ex1.csv'))
'''
   a   b   c   d message
0  1   2   3   4   hello
1  5   6   7   8   world
2  9  10  11  12     foo
'''
#读取数据,分隔符逗号,支持正则
print(pd.read_table('data/ex1.csv',sep=','))
'''
   a   b   c   d message
0  1   2   3   4   hello
1  5   6   7   8   world
2  9  10  11  12     foo
'''

#读取数据没有行,列名称
'''
1,2,3,4,hello
5,6,7,8,world
9,10,11,12,foo
'''
print(pd.read_csv('data/ex2.csv'))
#说明没有列名称,并且指定列名称
print(pd.read_csv('data/ex2.csv',header=None,names=['a','b','c','d','msg']))

'''
   1   2   3   4  hello
0  5   6   7   8  world
1  9  10  11  12    foo
默认把第一行作为列名称

   a   b   c   d    msg
0  1   2   3   4  hello
1  5   6   7   8  world
2  9  10  11  12    foo
'''
#指定某列名为行索引
print(pd.read_csv('data/ex2.csv',header=None,names=['a','b','c','d','msg'],index_col='msg'))
'''
       a   b   c   d
msg
hello  1   2   3   4
world  5   6   7   8
foo    9  10  11  12
'''

#分隔符不规则的
'''
            A         B         C
aaa -0.264438 -1.026059 -0.619500
bbb  0.927272  0.302904 -0.032399
ccc -0.264273 -0.386314 -0.217601
ddd -0.871858 -0.348382  1.100491
'''
print(pd.read_csv('data/ex3.csv'))
'''
               A         B         C
0  aaa -0.264438 -1.026059 -0.619500
1  bbb  0.927272  0.302904 -0.032399
2  ccc -0.264273 -0.386314 -0.217601
3  ddd -0.871858 -0.348382  1.100491
实际上它把后面的整体都作为数据了
'''
print(pd.read_table('data/ex3.csv',sep='\s+'))
'''
            A         B         C
aaa -0.264438 -1.026059 -0.619500
bbb  0.927272  0.302904 -0.032399
ccc -0.264273 -0.386314 -0.217601
ddd -0.871858 -0.348382  1.100491
如果行列不匹配会自动的把相应第一列作为索引
'''

#缺失数据
'''
something,a,b,c,d,message
one,1,2,3,4,NA
two,5,6,,8,world
three,9,10,11,12,foo
'''
print(pd.read_csv('data/ex5.csv'))
print(pd.read_csv('data/ex5.csv',na_values=['NA','NULL','foo']))
'''
  something  a   b     c   d message
0       one  1   2   3.0   4     NaN
1       two  5   6   NaN   8   world
2     three  9  10  11.0  12     foo
会把Na和空值赋值为Nan进行表示
  something  a   b     c   d message
0       one  1   2   3.0   4     NaN
1       two  5   6   NaN   8   world
2     three  9  10  11.0  12     NaN
指定了缺失值
'''
#给不同的列取不同的缺失值
print(pd.read_csv('data/ex5.csv',na_values={'message':['NA','NULL','foo'],'something':['one','two']}))
'''
  something  a   b     c   d message
0       NaN  1   2   3.0   4     NaN
1       NaN  5   6   NaN   8   world
2     three  9  10  11.0  12     NaN
'''


#处理比较多的数据方式
'''
one,two,three,four,key
0.467976300189,-0.0386485396255,-0.295344251987,-1.82472622729,L
-0.358893469543,1.40445260007,0.704964644926,-0.200638304015,B
10000行左右
'''
#统计key列出现的次数并且输出前10的
#读取10行
print(pd.read_csv('data/ex6.csv',nrows=10))
'''
        one       two     three      four key
0  0.467976 -0.038649 -0.295344 -1.824726   L
1 -0.358893  1.404453  0.704965 -0.200638   B
2 -0.501840  0.659254 -0.421691 -0.057688   G
3  0.204886  1.074134  1.388361 -0.982404   R
4  0.354628 -0.133116  0.283763 -0.837063   Q
5  1.817480  0.742273  0.419395 -2.251035   Q
6 -0.776764  0.935518 -0.332872 -1.875641   U
7 -0.913135  1.530624 -0.572657  0.477252   K
8  0.358480 -0.497572 -0.367016  0.507702   S
9 -1.740877 -1.160417 -1.637830  2.172201   G
'''
#分块
#每次读取1000行
tr = pd.read_csv('data/ex6.csv',chunksize=1000)
print(type(tr))
'''
<class 'pandas.io.parsers.TextFileReader'>
'''
#可以同for循环来进行
result = pd.Series()
for chunk in tr:
    result = result.add(chunk['key'].value_counts(),fill_value=0)
print(result)
'''
0    151.0
1    146.0
2    152.0
3    162.0
4    171.0
5    157.0
6    166.0
7    164.0
8    162.0
9    150.0
A    320.0
B    302.0
C    286.0
D    320.0
E    368.0
F    335.0
G    308.0
H    330.0
I    327.0
J    337.0
K    334.0
L    346.0
M    338.0
N    306.0
O    343.0
P    324.0
Q    340.0
R    318.0
S    308.0
T    304.0
U    326.0
V    328.0
W    305.0
X    364.0
Y    314.0
Z    288.0
'''
print(result.sort_values(ascending=False)[:10])
'''
E    368.0
X    364.0
L    346.0
O    343.0
Q    340.0
M    338.0
J    337.0
F    335.0
K    334.0
H    330.0
这样就得到前10的数据
'''

#保存

df = pd.read_csv('data/ex5.csv')
print(df)
'''
  something  a   b     c   d message
0       one  1   2   3.0   4     NaN
1       two  5   6   NaN   8   world
2     three  9  10  11.0  12     foo
'''
df.to_csv('data/ex5_out.csv')
'''
,something,a,b,c,d,message
0,one,1,2,3.0,4,
1,two,5,6,,8,world
2,three,9,10,11.0,12,foo
可以看到它把原来的索引也当成数据写入到文件中了
'''
df.to_csv('data/ex5_out.csv',index=False)
'''
something,a,b,c,d,message
one,1,2,3.0,4,
two,5,6,,8,world
three,9,10,11.0,12,foo
'''
#取消列
df.to_csv('data/ex5_out.csv',index=False,header=None)

#保存那几列
df.to_csv('data/ex5_out.csv',index=False,header=None,columns=['b','c','message'])




 

© 著作权归作者所有

共有 人打赏支持
eddy_linux
粉丝 18
博文 135
码字总数 188789
作品 0
成都
程序员
pandas的基本用法(五)——导入导出数据

文章作者:Tyan 博客:noahsnail.com | CSDN | 简书 本文主要是关于pandas的数据导入导出功能,非常简单。pandas支持的导入数据格式有csv,excel,sql,json,html,pickle等。导入数据使用的...

Quincuntial
2017/04/29
0
0
[雪峰磁针石博客]python数据分析快速入门教程2-pandas数据结构

Title: python数据分析快速入门教程2-pandas数据结构 Date: 2018-03-31 9:20 Category: 数据分析 Slug: pythonpandascrash_tutorial2 [雪峰磁针石博客]python数据分析快速入门教程1-开胃菜 ...

Python测试开发人工智能
07/10
0
0
利用 Pandas 进行数据分析

教程 利用 Pandas 进行数据分析 原文:https://www.dataquest.io/blog/pandas-python-tutorial/ 作者:Vik Paruchuri 译者:linkcheng Python 是进行数据分析的绝佳语言,主要原因是以数据为...

EarlGrey
2017/03/01
0
0
使用python和tableau对数据进行抓取及可视化

本篇文章介绍使用python抓取贷款及理财平台的数据,并将数据拼接和汇总。最终通过tableau进行可视化。与之前的python爬虫文章不同之处在于之前是一次性抓取生产数据表,本次的数据需要每天重...

铁扇公主1
2017/05/06
223
1
【机器学习】Numpy&Pandas 快速入门笔记

Numpy&Pandas 快速入门笔记 Xu An 2018-4-6 ######Numpy部分###### 1、创建array import numpy as np a=np.array([[2,23,4],[21,3,43],[34,43,234]],dtype=np.int32) #创建矩阵 使用dtype进行......

XuAn97916
06/26
0
0
记一次小机器的 Python 大数据分析

0x00 前言 机缘巧合,公司突然要搞一波大量数据的分析。属于客流类的分析。 数据量级也还算不错,经过 gzip 压缩,接近 400 个 点位的 SQL 文件 (MySQL innoDB),大小接近 100GB 左右,原始记...

2017/12/31
0
0
使用python连接MySQL数据库

作者: 蓝鲸 本篇文章使用python中的pymysql库连接MySQL数据库,并完成建表,数据写入和查询的过程。为了保证内容的完整性,我们将内容分为两个 阶段,第一阶段简单介绍数据的爬取过程。看过...

小数点
2017/11/27
0
0
如何用 Python 执行常见的 Excel 和 SQL 任务

作者:ROGER HUANG 本文转载自:http://code-love.com/2017/04/30/excel-sql-python/ 本教程的代码和数据可在 Github 资源库 中找到。有关如何使用 Github 的更多信息,请参阅本指南。 数据从...

Datartisan
2017/07/20
0
0
import pandas 使用方法

对于数据科学家,无论是数据分析还是数据挖掘来说,Pandas是一个非常重要的Python包。它不仅提供了很多方法,使得数据处理非常简单,同时在数据处理速度上也做了很多优化,使得和Python内置方...

csdnhuaong
05/30
0
0
Pandas模块入门(一)——Series结构介绍

Pandas模块是Python用于数据导入及整理的模块,对数据挖掘前期数据的处理工作十分有用,因此这些基础的东西还是要好好的学学。 Pandas模块的数据结构主要有两:1、Series ;2、DataFrame 这次...

qq_36332685
2017/12/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Tomcat内存设置

第一步骤: 1、路径是Tomcat目录下的/bin/catalina.bat文件 打开catalina.bat文件 加入下面这句代码: set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m 2、路径是...

一梦心草
8分钟前
0
0
IDEA 及 Gradle 使用总结

IDEA 及 Gradle 使用总结 自动编译组件 目前Android开发的主流开发工具是 Eclipse 和 IDEA 目前主流的自动化打包工具时 ant,maven,gradle。 maven工具中有自己的依赖仓库维护,很多开源支持...

舒文joven
8分钟前
0
0
lombok 引入后,测试类始终找不到get,set方法。

开发环境为idea,jdk1.7,maven3.5. 网上直接搜出来的方法有: 1、在setting里安装lombok的plugins; 2、如下图,勾选enable annocation processing选项 3、升级maven plugins插件 我尝试了以...

Kidult
10分钟前
0
0
Duang,HUAWEI DevEco IDE全面升级啦

想感受全新UI带来的视觉及交互体验、 HiKey970开发板调测、 HiAI API推荐和收藏、 深度AI模型分析等新功能, 体验高清晰度和流畅度的远程AI真机调测吗? 全新的UI设计 采用最优秀的视觉及交互...

华为终端开放实验室
19分钟前
0
0
阻止事件冒泡,阻止默认事件

1.event.stopPropagation()方法 这是阻止事件的冒泡方法,不让事件向documen上蔓延,但是默认事件任然会执行,当你掉用这个方法的时候,如果点击一个连接,这个连接仍然会被打开, 2.event....

闫亚亚
21分钟前
0
0
网络监控工具类

package com.guorentong.learn.organ.utils;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.net.ConnectivityManage......

王先森oO
21分钟前
0
0
命令

sudo nginx -s reload 重启nginx sudo lsof -i -P | grep -i "listen" 查看端口占用

那个猴子
25分钟前
0
0
用scrapy-redis爬去新浪-以及把数据存储到

需求:爬取新浪网导航页(http://news.sina.com.cn/guide/)所有下所有大类、小类、小类里的子链接,以及子链接页面的新闻内容。 准备工作: a.安装redis(windows或者linux) b.安装Redis Des...

丁典
25分钟前
0
0
PHP常用函数篇

1.为什么要使用函数? 除了内建的PHP函数,我们可以创建我们自己的函数。 函数是可以在程序中重复使用的语句块。 使代码逻辑更清晰 避免过多的全局变量 封装后避免相同逻辑重复代码,只需调用...

天地有涯风有信_大海无量不见人
26分钟前
0
0
对List分组

在日常工作中会遇到这样的情景,我们需要对List按照List中对象的一个值进行分组。比如一个Human的List,我们要根据性别分组,传统的方法是做双层循环,逐个对比,今天我要介绍一种详单简单的...

珂jack
28分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部