pandas的数据分析

读取不同数据源的数据

一、准备

1、安装第三方包

1)pymysql 、sqlalchemy

2)xlrd 、openpyxl,xlwt

3)requests

2、数据准备

1)创建一个数据库 meal

2)导入数据文件meal_order_detail1.sql
提取码:c6il

DataFrame补充

名称作用
df.options.display.max_columns =size在数据列有很多的时候,此方法可以限定返回的列数
df.index得到df的行索引
df.columns得到df的列的名称
df.info返回df的详细信息
df.head(size)返回df指定行数的数据,默认为5行

二、数据库的读写

方法分类

名称作用
read_sql_table只能读取某张表,不能查询,传入数据表名称和con,其他的自行添加
read_sql_query只能查询,传入sql语句和con,其他的自行添加
read_sql上面两个的集合体,看传入的是sql语句还是数据表名称
to_sql写入数据库,传入name,con,if_exists,index,index_label,dtype

方法里的参数

read_sql里的参数大多数通用

名称填入数据
con传入创建好的数据库连接engine
index_col传入字符串,传入数据表的字段作为DataFrame的行索引,可传入数组
columns传入数组或字符串,传入想得到数据的字段名称
chunsize传入int数据,以此大小创建一个迭代器,可用__next__()得出数据

to_sql里面的参数

名称填入数据
name要创建表的名称
if_exists传入fail,replace,append。fail表示表名若存在,则不进行操作;replace则是覆盖,append则是追加。默认为fail
index接收boolean,表示是否将行索引作为数据传入数据库。默认为True
index_label接收string或者sequence。代表是否引用索引名称,如果index参数为True此参数为None则使用默认名称。如果为多重索引必须引用sequence形式,默认为None
dtype接收dict。代表写入的数据类型(列名为key,数据格式为values)。默认为None
import numpy as np
import pandas as pd
from sqlalchemy import create_engine
# create_engine(string):数据库软件名称+使用库的名称://数据库账户:密码@数据库地址:数据库端口/数据库名称
engine=create_engine('mysql+pymysql://root:root@localhost:3306/meal')
detail1=pd.read_sql("meal_order_detail1",con=engine)
detail2=pd.read_sql("meal_order_detail1",con=engine,index_col='place_order_time')
detail3=pd.read_sql('meal_order_detail1',con=engine,columns=['order_id','counts', 'amounts',
       'cost', 'discount_amt'])
detail4=pd.read_sql("select * from meal_order_detail1",con=engine)
detail5=pd.read_sql("select * from meal_order_detail1",con=engine,chunksize=500)
detail3.to_sql("meal2",con=engine,if_exists='replace',index=False)

三、读取文本文件

文本文件 :txt,csv,tsv

info1=pd.read_csv('dataset/meal/meal_order_info.csv',sep=',',encoding='gbk')
info1.info()
order2=pd.read_csv('dataset/meal/meal_order_info.csv',sep=",",
                   index_col='use_start_time',parse_dates=True,encoding='gbk')
order2.index
order3=pd.read_csv('dataset/meal/meal_order_info.csv',sep=",",
                   index_col='use_start_time',parse_dates=True,encoding='gbk',nrows=5)
order3.shape
orders=pd.read_csv('dataset/meal/meal_order_info.csv',sep=",",
                   index_col='use_start_time',parse_dates=True,encoding='gbk',chunksize=100)
for order in orders:
    print(order.shape)
detail3.to_csv('dataset/meal/detail3.csv', sep='|', na_rep='NA', index=False)

sep:分隔符
encoding:编码
index_col:将某列作为行索引
parse_dates:将列数据转化为日期类型

三、读写Excel文件

sheet_name :加入excel中多个表,此参数用来指定表,传入表的名称

detail5=pd.read_excel("dataset/meal/meal_order_detail.xlsx")
detail5.loc[:5,'detail_id']
detail6=pd.read_excel("dataset/meal/meal_order_detail.xlsx",sheetname='meal_order_detail2')
detail6[:2].to_excel("dataset/meal/detail6.xlsx",sheet_name='meal_order')

多个DataFrame写入同一excel不同sheet中

官方

writer = pd.ExcelWriter('output.xlsx')
df1.to_excel(writer,'Sheet1')
df2.to_excel(writer,'Sheet2')
writer.save()

注意:sheet_name不能相同,会被覆盖的。

四、读取html数据

读取网页中table标签中的数据
1、把网页从网上抓取
2、解析数据

import requests
html=requests.get("http://kaoshi.edu.sina.com.cn/college/majorlist/")
html.encoding = html.apparent_encoding
html_data=pd.read_html(html.content,encoding='utf-8')
type(html_data)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值