初级数据分析-python(第一节数据存储)

第一节数据存储

在大数据时代,各领域都为数据分析提供海量的数据源。数据可以分为非结构化数据、半结构化数据和结构化数据。对于数据分析师而言,工作中经常面对的数据格式有excel数据,JSON数据,以及SQLite等数据库数据。因此,本章节将以这三种格式的数据为例,讲解数据的常用存取方法。

  • 对于csv格式文件,可以用csv模块的csv.reader()方法读取,也可以利用pandas的read_csv()方法读取。

  • 对于xlsx和xls格式文件,可以用pandas和read_Excel()方法读取

  • 对于txt格式文件,可以用pandas的read_table()读取并导入文件。

一、CSV格式数据的导入

序号天气是否周末是否有促销销量
1
2
3
4
5
  1. 方法(1)使用csv.reader()的方式进行读取,代码如下:

    import csv
    with open('D:/大数据/items/10-5.csv','r',encoding='utf8')as csvfile:
        reader=csv.reader(csvfile)
        for row in reader:
            print(row)
    ​

**panda库和csv库的区别

  • panda输出的每一行,最前面的数字是行索引号

import pandas as pd
df=pd.read_csv('D:/大数据/items/10-5.csv',encoding='utf8')
print(df)
​

3.对于Excel数据的xls和xlsx的文件,可用pandas的read_Excel()方式导入

import pandas as pd
import xlrd
df=pd.read_excel("D:/大数据/items/10-5.xls")
print(df)

这种方法需要安装xlrd库,并且xlrd库只支持xls文件(不支持xlsx文件)

二、JSON格式数据的导入

【例】某数据分析师通过队网站爬虫获取各个网站的用户数据sites.json,数据包括了用户的id,其访问的网站名,网站的url地址,以及用户所喜欢的产品,部分示例数据如下:

{

"id":["1","2","3"],

"name":["Google","Runoob","Taobao"],

"url":["www.google.com","www.runoob.com","www.taobao.com"],

"like":[11,22,33]

}

【解】如果从json文件中读取内容,利用python的loads()方法加载文件,需要注意的是,json.loads()读取的json字符串,因此需要先用read()方法读取文件“data.json”的每一行,然后利用loads()方法加载为字典形式**,程序语句如下:

import json
with open('D:/大数据/items/10-5.json','r',encoding='utf-8')as file:
    str=file.read()
    data=json.loads(str)
    print(data)

ps:注意json的格式

三、SQLite格式数据的导入

SQLite是一个软件库,实现了自给自足、无服务器的、零配置的、事务性的SQL数据库引擎。SQLite是在世界上最广泛部署的SQL数据库引擎。SQLite源代码不受版权限制。

【例】请采用python内置的sqlite数据库,创建一个sales_table的数据表包含时间,城市和销售值三个字段,三个字段的类型分别为文本型、文本型和实数型,并插入两条数据‘2021-01-10’,‘beijing’,10000和2020-01-10‘,’shanghai‘,15000。最后从数据库中查询sales_table中的所有数据样本。

【解】可以利用sqlite3的connect方法连接数据库,然后利用pandas的read_sql_query()方法读取数据库表格,程序代码如下所示:

import sqlite3
import pandas as pd
with sqlites3.connect('text_database.sqlite')as con:
    df = pd.read_sql_query('SELECT * FROM sales_table',con=con)
    print(df)

四、txt文本格式数据导入

【例】戈丁的数据集abalone.txt 记录了鲍鱼的一些 比较容易获得的量测数据,一次为属性的名称、数据类型、单位和描述,如下表所示。

【解】用pandas模块的read_table()方法进行读取

import pandas as pd
stock = pd.read_table('D:/大数据/items/shushu.txt',sep='\t')
stock.head(n=2)###意为读入数据前两行
​

五、专业数据库平台的数据导入

【例】从yahoo数据源获取2015年1月1日至今宝洁公司(PG)的股票交易数据,交易数据包括最高价、最低价、开盘价、收盘价、成交量、调整收盘价、简单收益率。

【解】某些数据源平台提供了数据读取的接口api,如Tushare平台提供了get_hist_data方法读取股票数据,程序代码如下:

import tushare as ts
ts.get_hist_data('600848',start='2021-01-05',end='2021-07-10')

第二节输出数据

  • 对于csv格式文件,python的csv模块库提供了csv.writer()方法对数据进行写入操作。

  • 对于xls和xlsx格式文件,python提供了xlsx文件的存取库slsxwriter和oopenpyxl,分别用于xlsx文件的写入和读取。

  • 对于txt格式文本,可以使用python的open方法打开文件,然后调用write()方法对文本文件进行写入输出。

  • 对于json格式文件,python提供了dumps()方法用于将json对象转换成字符串,然后再调用文件的write()方法写入文件并保存。

一、CSV格式数据输出

【例】利用CSV库提供的writer()方法,将新增的一行销售数据写入原文件sales.csv中,对元数据进行覆盖,并将其另存到备份文件stock_bake.csv中。

【解】csv库提供了writer()方法进行写入操作。具体来说,csv.writer(csvfile,dialect='Excel',**fmtparams)方法可以将数据写入指定文件,其参数与csv.reader()方法中的参数含义相同。程序语句如下:

import csv
with open('D:/大数据/items/10-5.csv','w')as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow([57,'faker','mid','hati','forever'])
print('数据输出完成!')

【解】采用pandas库中的to_csv()方法,也可以将数据存储为csv格式,程序语句如下所示:

import pandas as pd
df = pd.read_csv('D:/大数据/items/10-5.csv',encoding='utf-8')
df.to_csv('D:/大数据/items/10-5(2).csv')
df1 = pd.read_csv('D:/大数据/items/10-5(2).csv')
print(df1)

输出结果:

Empty DataFrame
Columns: [Unnamed: 0, 57, faker, mid, hati, forever]
Index: []

二、xlsx格式数据输出

【例】对于上述问题,如销售文件格式为sales.xlsx文件,这种情况下该如何处理?

【解】python提供了xlsx文件的存取库xlsxwrite,用于xlsx的写入和读取。

import os
import xlsxwriter
data = xlsxwriter.Workbook('D:/大数据/items/10-5.xlsx')
worksheet = data.add_worksheet('表1')##sheet的名字
worksheet.write('A1',"57,'faker','hati','love','forever'")
data.close()

三、json格式数据输出

【例】某数据分析师通过对网站爬虫获取各个网站的用户数据sites.json,数据包括了用户的id,其访问的网站名,网站的url地址,以及用户所喜欢的产品,数据文件格式是sites.json格式,存储位置为D盘,这种情况下如何将一条形式如下的新记录,写入文件并进行保存?

【解】python提供了dumps()方法用于将json对象转换成字符串,然后再调用文件的write()方法写入文件并保存,程序语句如下:

import json
data = [{
    'id':'57',
    'name':'faker',
    'adress':'soul',
    'likes':'hati'
}]
with open('D:/大数据/items/10-5.json','w',encoding='utf-8')as file:
    ##下面是最关键的一行
    file.write(json.dumps(data,indent=2,ensure_ascii=False))
with open('D:/大数据/items/10-5.json','r',encoding='utf-8')as file:
    str = file.read()
    ##用json.load()转换才能读取
    data = json.loads(str)
    print(data)

四、txt格式数据输出

【例】给定的数据集abalone.txt记录了鲍鱼的一些比较容易获得的量测数据,一次为属性的名称、数据类型、单位和描述,如下表所示。请利用python写入一条形式如下的数据,并保存。

性别长度直径高度整体重量肉重量内脏重量壳重年龄
00.350.250.070.16050.07150.03350.0466

【解】可以使用python的open方法打开文件,然后调用write()方法对文本文件进行写入输出。

f=open('d:/大数据/items/shushu.txt','w')
f.write("0,57,130,131,120,112,1103")
f.close()

注意:’w'输出方式将覆盖原有文件内容,如果想在文件尾部追加数据,可以使用‘a'

f=open('d:/大数据/items/shushu.txt','a')
f.write("0,57,130,131,120,112,1103")
f.close()

五、章节练习

1.餐饮企业的决策者想要了解影响餐厅销量的一些因素,如天气的好坏,促销活动,周末和非周末销量的区别。对于数据集sales.csv,为某餐厅收集的数据,请将其转换为txt格式后,利用python方法进行读取导入。

Pandas 数据的导入和导出

Pandas能从文本文件和Excel文件中读入数据,形成dataframe,也可以将dataframe导出到文本文件、Excel文件中存储起来。

导入函数有(1)pd.read_csv():导入后缀名为.csv,.txt的文本文件;(2)pd.read_excel():导入后缀名为.xlsx的Excel文件。

导出函数有(1)df.to_csv)():将数据存储到csv文件或txt文件中;(2)df.to_excel():将数据存储到Excel文件中;

无论是导入函数还是导出函数,都有参数 header,表示 dataframe 的列索引。而行索引在导入函数中用参数 index_col 表示,将某列指定为行索引;行索引在导出函数中用参数 index 表示,指示是否要存好行索引。

题目代码:

import pandas as pd
df=pd.read_csv("d:/大数据/items/10-12.csv",encoding="gbk")
print(df)

df.to_csv("d:/大数据/items/10-14.txt")

df=pd.read_csv("d:/大数据/items/10-14.txt",encoding="utf-8")
print(df)

2.对于本章给定的数据集 abalone.txt记录了鲍鱼(一种壳类水生生物)的一些比较容易获得的量测数据,依次为属性的名称,数据类型,单位和描述,请将其手动转换成csv和xlsx格式后,利用python进行读取和导入

import pandas as pd
abalone = pd.read_table("d:/大数据/items/10-14.txt",sep="\t")
print(abalone)

abalone.to_csv("d:/大数据/items/10-14.csv")
abalone.to_excel("d:/大数据/items/10-14.xls")

abalone = pd.read_csv("d:/大数据/items/10-14.csv",sep="\t")
print(abalone)
abalone = pd.read_excel("d:/大数据/items/10-14.xls")
print(abalone)

3.请利用Tushare平台提供的get_hist_data()方法来获取2021年2月10日至2022年2月10日期间段内代码‘600848’为股票交易数据,交易数据包括:开盘价,最高价,收盘价,最低价,成交量,价格波动,涨跌幅,5日平均。。。等。

import tushare as ts
data = ts.get_hist_data('600848',start='2022-2-10',end='2022-2-10')
print(data)

4.对于给定的数据库文件test_database.sqlite,数据形式如下所示,请利用python对数据库中的sales_table文件读取导入。

import sqlite3
import pandas as pd
with sqlite3.connect('test_database.sqlite') as con:
    df = pd.read_sql_query("SELECT * FROM sales_table",con=con)
    print(df)

5.某数据分析师通过对网站爬虫获取哥哥网站的用户数据sites.json, 数据包括了用户id,其访问的网站名,url地址,用户喜欢的茶农。请利用python读入导入后,将结果保存并输出到d盘sites.csv格式文件中。

import json
data = [{
    'id': '4',
    'name': 'baidu',
    'url': 'zhizhi',
    'like':'shushu'
    }]
with open('d:/大数据/items/10-14.csv','w',encoding='utf-8')as file:
    ##json.dump()   :将python中的对象转化成json储存到文件中
    ##indent表示缩进,ensure_ascii设置编码
    file.write(json.dumps(data,indent=2,ensure_ascii=False))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值