文档章节

9-pandas导入导出数据

eddy_linux
 eddy_linux
发布于 2017/09/07 10:54
字数 973
阅读 44
收藏 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
粉丝 19
博文 135
码字总数 188789
作品 0
成都
程序员
pandas的基本用法(五)——导入导出数据

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

Quincuntial
2017/04/29
0
0
pandas 中DataFrame使用:数据导入\出,重复值处理,缺失数据处理,字段抽取,字段拆分

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/meiqi0538/article/details/82557879 本文测试使用Pandas使用的是Spyder,python3.6版本,已经安装好pandas包...

皮乾东
09/09
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

没有更多内容

加载失败,请刷新页面

加载更多

麒麟AI首席科学家现世

8月31日,华为发布了新一代顶级人工智能手机芯片麒麟980,成为全球首款7nm工艺手机芯片,AI方面也实现飞跃,支持人脸识别、物体识别、物体检测、图像分割、智能翻译等。 虽然如今人人都在热议...

问题终结者
昨天
1
0
告警系统主脚本、告警系统配置文件、告警系统监控项目

告警系统主脚本 main.sh内容 #!/bin/bash#Written by aming.# 是否发送邮件的开关export send=1# 过滤ip地址export addr=`/sbin/ifconfig |grep -A1 "ens33: "|awk '/inet/ {pr...

芬野de博客
昨天
2
0
MySQL autocommit探究

-- sessionA:tx_isolation=REPEATABLE-READmysql> select connection_id();+-----------------+| connection_id() |+-----------------+| 28 |+-----------------+......

安小乐
昨天
7
0
c++多线程锁 Mutex  自动判断死锁

c++多线程锁可以使用absl::Mutex std::mutex这两种,下面是demo代码。 使用absl:Mutex的时候打印: [mutex.cc : 1338] RAW: Cycle: [mutex.cc : 1352] RAW: mutex@0x683b68 stack: @ 0x43856......

青黑
昨天
3
0
Blockathon2018(成都站)比赛落幕,留给我们这些区块链应用思考

9月14日,HiBlock区块链社区主办的第二届Blockathon在成都菁融国际广场成功举行,30名参赛者分为5支队伍在48小时内完成区块链项目的创意、开发及路演,经过紧张的开发及现场评选,最终币托(...

HiBlock
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部