利用Python加载不同来源的数据

因为Python具有丰富的数据处理和数据分析的库,处理数据的速度也较快,在工作中,会经常遇到将不同来源的数据(不管是csv,excel等表格数据或txt,json等文本数据甚至是数据库中的数据)使用Python读取到内存中进行数据处理或分析。针对不同来源的数据,Python提供了丰富的包和方法进行加载,本文记录Python加载常见的几种类型的数据的方法。

TXT文本文件加载

TXT是工作中常见的文本文件格式,有的TXT文档保存以一定的分隔符进行分割,但很大部分TXT文档保存着成段成端的文本信息(NLP自然语言处理读取的文本信息)。针对这两种类型的文件,有不同的加载方式。

  • 成段TXT文本加载
    Python中有read函数和readline函数读取TXT文本的内容。

    #读取整篇内容
    f = open('xxxxx.txt',encoding='utf-8')  #open函数打开文件
    print(f.read())
    f.close()
    
    #按行读取文本内容
    f = open('xxxxx.txt','r',encoding='utf-8')  #open函数打开文件
    lines = f.readlines()
    for line in lines:
    	print(line)
    f.close()
    
  • 读取TXT文件生成DataFrame

    import pandas as pd
    
    #pd.read_csv读取默认分隔符为 ,
    df = pd.read_csv('xxxx.txt')
    #读取时制定分隔符并手动指定表头
    df = pd.read_csv('xxxx.txt',sep='\t',header=None,names=['a','b',....])
    #pd.read_table默认分隔符为tab制表符
    data=pd.read_table('xxxx.txt', 
         sep=','#指定分隔符
         header=None , #指定首行不是表头
         names=['a','b',....] , #重新指定表头
         converters={'id':str} ,#将id列转换为字符串(通常为了避免数字前有0消失)
         skiprows=n , #跳过开头的n行数据
         skipfooter=n, #跳过末尾的n行数据
         comment='!' #跳过'!'开头的行
         )
    

csv文件加载

csv是一种以英文半角逗号(,)作为分隔符的文件,以纯文本格式存储表格数据。

import pandas as pd

#pd.read_csv读取csv文件默认以,作为分隔符
df = pd.read_csv('xxxx.csv')

#常用的一些参数
path = r"xxx\xxx\xxxx.csv"
df = pd.read_csv(path, #csv路径
	sep=",|;",  #多个分隔符用|隔开
	header=0, #指定第一行为列名
	encoding='gbk', #指定编码格式
	index_col='列名', #指定某列为索引
	usecols=['a','b',...], #加载某几列
	converters={'id':lambda x: int(x)+1 #读取时对列进行变换
	)

Excel文件加载

Excel是工作中针对表格数据最常见的存储方式之一,扩展名为’xlsx’或’xls’,Python读取Excel文件并生成格式化DataFrame格式尤为重要。

import pandas as pd

path = r"xxx\xxx\xxxx.xlsx"
df = pd.read_excel(path, #文件路径+文件名
	sheet_name='Sheet2', #读取Sheet2工作表,可以输出整数表示第几张表或列表读取多张表,输入None读取所有表
	header=n, #第n行作为表头
	)

sql查询结果加载

SQL查询是数据分析师主要工作之一,SQL数据处理有一定的效率,但是不如Python方法灵活多变,一些较为复杂的处理过程可以读入Python进行处理。Python有几个包可以连接MySQL数据库,进而实现查询结果在Python中输出甚至数据存储到数据库。

#首先建立Python与数据库的连接

## 用pymysql构建数据库连接
###方法一:
import pandas as pd
import pymysql
 
conn = pymysql.connect(host=localhost, #数据库地址
	port = 3306 , #端口号
	user='username',  #用户名
	password='password',  #密码
	database='dbname',  #数据库名
	charset='utf8' #编码格式
	)
 
sql_select = 'SELECT * FROM table_Name'
df = pd.read_sql(sql_select, conn)
### 方法二:
import pymysql
 
db = pymysql.connect(host=localhost, #数据库地址
	port = 3306 , #端口号
	user='username',  #用户名
	password='password',  #密码
	database='dbname',  #数据库名
	charset='utf8' #编码格式
	)
cursor = db.cursor() #使用 cursor() 方法创建一个游标对象 
sql = "select * from tableName" #sql语句(既可以是查询也可以是插入、修改等)
cursor.execute(sql)
rows = cursor.fetchall() #获取所有数据
db.commit()
cursor.close()
db.close() #关闭数据库连接
#结果返回数据框格式
df = pd.DataFrame(rows)

##用sqlalchemy构建数据库连接
import pandas as pd
import sqlalchemy
from sqlalchemy import create_engine
 
connect_info = "mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8".format(user,passwd,localhost,3306,dbname)
#数据库类型(sqlite, mysql,postgresql,oracle,mssql)+数据库驱动(mysqldb,pymysql,pyodbc)://用户名:密码@数据库ip地址和端口号/数据库名?charset=编码格式
engine = create_engine(connect_info)
 
sql_selct = “SELECT * FROM table_Name”
df = pd.read_sql(sql=sql_select, con=engine)

html文件加载

工作中有一些文件是html格式,或者需要从网页的表格中获取数据,可以使用pd.read_html实现快速获取表格数据生成DataFrame格式。

import pandas as pd

url = "http://xxxxxxx"
df = pd.read_html(url)[0]  #read_html得到页面上所有表格的列表,使用索引获取第一个表

json文件加载

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写,可以在多种语言之间进行数据交换,使用Python可以将json格式快速转换为DataFrame

import pandas as pd

path = "xxx/xxx/xxxx.json"
df = pd.read_json(path,orient='records') #列表套字典(列为键)
df = pd.read_json(path,orient='index') #行为最外层键
df = pd.read_json(path,orient='columns') #列为最外层键
df = pd.read_json(path,orient='values') #列表套列表(一行为一个列表)

stata文件加载

stata常用于计量建模,Python读取stata中的数据集(dta文件)有时在分析工作中也会用到。

import pandas as pd

df = pd.read_stata('xxxx.dta', chunksize=10000) #以10000行块读取dta文件
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值