1、CSV格式数据:

1.1普通读取和保存

可以以纯文本形式打开,可以保存多条记录,每条记录的数据之间默认用逗号来分隔,csv就是逗号分割值的英文缩写。

保存为csv文件:

import pandas as pd

data=pd.DataFrame(数据源)

data.to_csv('文件名.csv',index = False,encoding = 'utf-8,mode='a'')  index= False的意思是不把index保存进文件中,mode='a'是表示以追加的方式加入文件中

读取csv文件: read_csv

参数详解:https://www.jianshu.com/p/366aa5daaba9【比如一些日期参数,大文件参数】

  •   参数:head 、names :# 这里的header=None是表示第一行的数据不取为列名,自己另外取名为names=['a','b','c']。如果不加header=None则表示第一行作为列名。
  1. dataframe=pd.read_csv('地址加文件名.csv',header=None,names=['a','b','c'])
  2. printdataframe
  •   参数:encoding :# 遇到 ‘utf-8’ codec can’t decode byte 0xba in position 0: invalid start byte 但是又必须要中文解码,解决办法是设置read_csv中encoding = ‘GB2312’

  注意:读取csv文件还有别的方法:read_table(' 文件位置 ', names=' dataframe的列名 ',encoding='utf-8' ,sep='|' )

  1. reader = pd.read_table('tmp.sv', sep='|', chunksize=4)
  2. for chunk in reader:
  3. print(chunk)
  •   参数:iterator :指定iterator=True 也可以返回一个可迭代对象TextFileReader :
  1. reader = pd.read_table('tmp.sv', sep='|', iterator=True)
  2. reader.get_chunk(5)
  1. # open读取代码:
  2. with open(filepath,'r') as f:
  3.   for line in f:
  4.     print(line)
  5.  
  6. #pandas读取代码:
  7. chunk_data = pd.read_csv('./data/train_data/showctr.txt', sep = '\t', quoting = csv.QUOTE_NONE, header = None, names=['query','show', 'click','rate'],iterator = True)
  8. largeshow = pd.DataFrame()
  9. smallshow = pd.DataFrame()
  10. count = 0
  11. loop = True
  12. while loop:
  13. try:
  14. chunksize = 100000
  15. show_data = chunk_data.get_chunk(chunksize)
  16. show_data = show_data.dropna(axis = 0,subset=['query'])
  17. largeshow = pd.concat([largeshow,show_data[show_data['show'] >= 1000]],axis = 0)
  18. smallshow = pd.concat([smallshow,show_data[show_data['show'] < 1000]],axis = 0)
  19. count += 1
  20. except StopIteration:
  21. loop = False
  22. print("shape of show_rawdata , large_show and small_show ", count * chunksize, largeshow.shape ,smallshow.shape)

1.2、csv文件读取:

以下方式读出来的不是dataframe,是列表形式

  1. from numpy import loadtxt
  2. dataset=loadtxt('***.csv',delimiter=",") 【逗号为分隔符】

1.3、csv文件追加

  1. f=open(path,'a+',newline='')#newline设定可以让写出的csv中不包含空行
  2. writer=csv.writer(f)
  3. for row in range(b.shape[0]):
  4. writer.writerow(b.iloc[row])#按行将数据写入文件中
  5. f.close()

df.to_csv('my_csv.csv', mode='a', header=False)

2、Excel文件的读取和保存

保存:

dataframe=pd.DataFrame(数据源)

dataframe.to_excel('文件名.xlsx',sheet_name='表名')

读取:

dataframe=pd.read_excel('文件名.xlsx')

print(dataframe)

3、sql文件读取:read_sql

读取sql文件之前需要安装好mysql以及python连接mysql的模块PyMySQL,直接命令pip install pymysql。

在数据库中新建一个数据库test,然后新建一个表students,插入数据。

在读取mysql数据之前要将mysql的服务启动:net start mysql。

  1. import pymysql
  2. import pandas as pd
  3. #连接数据库为test
  4. conn=pymysql.connect(host="127.0.0.1",user="root",passwd="",db="test")
  5. #查询的表为students
  6. sql="select * from students"
  7. data=pd.read_sql(sql,conn)
  8. print(data)

结果如下:输出结果为dataframe

4、读取html文件:read_html

这个函数主要读取HTML中table的数据。

本地的HTML文件代码如下:

  1. <html>
  2.  
  3. dnfnjefwnkndsn
  4. <table>
  5. <tr><td>7</td><td>9</td></tr>
  6. <tr><td>5</td><td>8</td></tr>
  7. <tr><td>2</td><td>6</td></tr>
  8. </table>
  9. </html>

读取代码如下:

  1. import pandas as pd
  2. htl=pd.read_html('E:\wenjian\data\test.html')
  3. print(htl)

结果如下:

读取网络上的HTML的数据也一样。只要将本地地址换成网络地址就行。

5、读取文本数据(txt文件、dat文件、out文件):read_table

  dataframe写入文本数据代码:

  1. def text_save(filename, data):#filename为写入CSV文件的路径,data为要写入数据列表.
  2. file = open(filename,'a')
  3. for i in range(len(data)):
  4. s = str(data[i]).replace('[','').replace(']','')#去除[],这两行按数据不同,可以选择
  5. s = s.replace("'",'').replace(',','') +'\n' #去除单引号,逗号,每行末尾追加换行符
  6. file.write(s)
  7. file.close()
  8. print("保存文件成功")

6、小例子实现:

  1. import pandas as pd
  2.  
  3. df=pd.read_csv('test_csv.csv')
  4. df['Sum_score']=df['Python']+df['Math']
  5. print(df)
  6. df1=df.rename(columns={'Sum_score':'sum'})
  7. print(df1)
  8. df1.to_excel('test_csv.xlsx',sheet_name='scores')

7、json文件读取:

json文件中的数据形式和字典很像,比如:

d1 = {'1':2, '2':3, '3':4}
d2 = {'1':3, '2':4, '3':5}

d1为一个json对象,d2也是一个json对象。如果一个data.json文件中同时存储着d1和d2,则在读取json文件时不能同时解析两个对象,因为这两个对象中的key是一样的

  1. #调用read函数全部读取json文件中的数据会报错,因为不能同时读取相同的json对象。需要用readlines()函数,一行一行的读取。
  2. import json
  3. with open('data.json','r') as f:
  4. data=f.read()
  5. data=json.loads(data)
  6. print(data)
  7.  
  8. #调用readlines()函数读取,并加载进一个列表当中
  9. data_list=[]
  10. with open(r'data.json','r') as f:
  11. for line in f.readlines():
  12. dic = json.loads(line)
  13. data_list.append(dic)
 

Python数据分析1------数据存取的更多相关文章

  1. python数据分析笔记——数据加载与整理]

    [ python数据分析笔记——数据加载与整理] https://mp.weixin.qq.com/s?__biz=MjM5MDM3Nzg0NA==&mid=2651588899&id ...

  2. Python数据分析_Pandas01_数据框的创建和选取

    主要内容: 创建数据表 查看数据表 数据表索引.选取部分数据 通过标签选取.loc 多重索引选取 位置选取.iloc 布尔索引 Object Creation 新建数据 用list建series序列 ...

  3. Python数据分析--------numpy数据打乱

    一.shuffle函数: import numpy.random def shuffleData(data): np.random.shufflr(data) cols=data.shape[1] X ...

  4. Python数据分析与展示(1)-数据分析之表示(2)-NumPy数据存取与函数

    NumPy数据存取与函数 数据的CSV文件存取 CSV文件 CSV(Comma-Separated Value,逗号分隔值) CSV是一种常见的文件格式,用来存储批量数据. 将数据写入CSV文件 np ...

  5. Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识

    Python 数据分析(二) 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识 第1节 groupby 技术 第2节 数据聚合 第3节 分组级运算和转换 第4 ...

  6. python数据分析之pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]

    1 引言 Pandas是作为Python数据分析著名的工具包,提供了多种数据选取的方法,方便实用.本文主要介绍Pandas的几种数据选取的方法. Pandas中,数据主要保存为Dataframe和Se ...

  7. 【python数据分析实战】电影票房数据分析(二)数据可视化

    目录 图1 每年的月票房走势图 图2 年票房总值.上映影片总数及观影人次 图3 单片总票房及日均票房 图4 单片票房及上映月份关系图 在上一部分<[python数据分析实战]电影票房数据分析(一 ...

  8. python数据分析数据标准化及离散化详解

    python数据分析数据标准化及离散化详解 本文为大家分享了python数据分析数据标准化及离散化的具体内容,供大家参考,具体内容如下 标准化 1.离差标准化 是对原始数据的线性变换,使结果映射到[0 ...

  9. python数据分析-数据导入

    1.导入CSV格式数据 import pandas data = pandas.read_csv("C:\\Users\\zhaosai\\Desktop\\进击的DBA\\谁说菜鸟不会数据 ...

随机推荐

  1. (23)Spring Boot启动加载数据CommandLineRunner【从零开始学Spring Boot】

    [Spring Boot 系列博客] )前言[从零开始学Spring Boot] : http://412887952-qq-com.iteye.com/blog/2291496 )spring bo ...

  2. 简述synchronized和java.util.concurrent.locks.Lock的异同

    1.synchronized 用在方法和代码块的区别? a. 可以只对需要同步的使用 b.与wait(),notify()和notifyall()方法使用比较方便 2.wait() a.释放持有的对象 ...

  3. 【ACM】hdu_zs1_1001_水仙花数_201307271504

    水仙花数 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)Total Submissio ...

  4. 洛谷 P1692 部落卫队

    P1692 部落卫队 题目描述 原始部落byteland中的居民们为了争夺有限的资源,经常发生冲突.几乎每个居民都有他的仇敌.部落酋长为了组织一支保卫部落的队伍,希望从部落的居民中选出最多的居民入伍, ...

  5. Ruby 读取文件

    Ruby 读取文件 一次全读出来 textAll = File.read("fileName.txt") puts textAll 一次读取一行 file = File.open( ...

  6. python使用pytest+pytest报告

    需要安装pytest和pytest-html pip3 install -U pytest pip3 install -U pytest-html

  7. URL重写及ASP.NET路由、Http处理模块、程序等

    这段时间在学习ASP.NET路由.HTTP处理等内容,了解了一些,但又未完全弄懂,似是而非,不管如何,作一总结,供日后借鉴和修改. 一.IIS6和IIS7经典模式和集成模式 在IIS6及IIS7经典模 ...

  8. Java编程:切面条

    /* 一根高筋拉面,中间切一刀,能够得到2根面条. 假设先对折1次.中间切一刀.能够得到3根面条. 假设连续对折2次,中间切一刀.能够得到5根面条. 那么.连续对折10次.中间切一刀.会得到多少面条呢 ...

  9. bzoj2958: 序列染色(DP)

    2958: 序列染色 题目:传送门 题解: 大难题啊(还是我太菜了) %一发大佬QTT 代码: #include<cstdio> #include<cstring> #incl ...

  10. [POJ 3345] Bribing FIPA

    [题目链接] http://poj.org/problem?id=3345 [算法] 树形背包 [代码] #include <algorithm> #include <bitset& ...