lecture 2:Python数据导入导出

本文详细介绍了Python中数据的导入与导出操作,包括使用statsmodels、pandas等库处理CSV、Excel和TXT文件。讲解了如何读取CSV、Excel数据,以及如何设置分隔符和索引。此外,还提到了财经数据的在线下载,如tushare、pandas_datareader等,并介绍了AkShare和证券宝等财经数据接口库。
摘要由CSDN通过智能技术生成

python数据导入、导出

statsmodel模块网址

计量主要调用的模块:statsmodels is a Python module that provides classes and functions for the estimation of many different statistical models

在计量实战中,我们保留的数据格式主要是 TXT、CSV、Excel 三种格式,其中TXT、CSV更为通用和更少出错

  1. 常用的包
import pandas as pd
import numpy as np
import statsmodels.api as sm
import statsmodels.formula.api as smf
import scipy.stats as stats
from statsmodels.stats.anova import anova_lm
import matplotlib.pyplot as plt
import sklearn import linear_model
  1. 读入CSV数据
import pandas as pd
df = pd.read_csv("D:\\myfolder\\xl1-1.csv")
print(df)
  1. 读入Excel数据
    #读取excel之前先打开命令行,安装xlrd。即在命令行中输入pip install xlrd。
import pandas as pd
df = pd.read_excel("D:\\myfolder\\test.xlsx")
print(df)
  1. 导出到CSV
import pandas as pd
df = pd.read_excel("D:\\myfolder\\test.xlsx")
print(df)
df.to_csv("D:\\myfolder\\testcsv.csv", encoding='utf-8', index=False)
#数据导出到tsetcsv.csv#

将test.xlsx的数据导入到testcsv.csv文件中
#数据中含有中文,使用‘utf-8’,index=false去掉行名称导出

  1. 导出到Excel
    #先安装openpyxl包
import pandas as pd
import openpyxl
df = pd.read_excel("D:\\myfolder\\test.xlsx")
df.to_excel("D:\\myfolder\\excel2excel.xlsx", encoding='utf-8', index=False)
#数据导出到excel2excel.xlxs#
dt = pd.read_excel("D:\\myfolder\\excel2excel.xlsx")
print(dt)

读入TXT文件:全面的解读

1.读不同分隔符的文本文件,用参数sep
2.读无字段名(表头)的文本文件 ,用参数names
3.为文本文件制定索引,用index_col

import pandas as pd
data = pd.read_table('d:/new.txt',delim_whitespace=True,index_col=0)
#header=None:没有每列的column name,可以自己设定
#encoding='gb2312':其他编码中文显示错误
#delim_whitespace=True:用空格来分隔每行的数据
#index_col=0:设置第1列数据作为index片
data.to_excel("d:/my_new.xls")
#####
import pandas as pd     #引入pandas包
citys=pd.read_table('./1.txt',sep='\t',header=None)     #读入txt文件,分隔符为\t
print(citys)

seq标识分隔符,分隔符为\t ,即制表符,表示列与列之间用\t分开

header=None 表示txt文件的第一行不是列的名字,是数据。若不写head=None,则读入txt数据时,会没了第一行

pandas.read_table(filepath_or_buffer,sep='\t',delimiter=None,
                  header='infer',names=None,index_col=None,usecols=None,squeeze=False,
                  prefix=None,mangle_dupe_cols=True,dtype=None,engine=None,converters=None,
                  true_values=None,false_values=None,skipinitialspace=False,skiprows=None,
                  nrows=None,na_values=None,keep_default_na=True,na_filter=True,verbose=False,
                  skip_blank_lines=True,parse_dates=False,infer_datetime_format=False,
                  keep_date_col=False,date_parser=None,dayfirst=False,iterator=False,
                  chunksize=None,compression='infer',thousands=None,decimal=b'.',lineterminator=None,
                  quotechar='"',quoting=0,escapechar=None,comment=None,encoding=None,dialect=None,
                  tupleize_cols=None,error_bad_lines=True,warn_bad_lines=True,skipfooter=0,
                  doublequote=True,delim_whitespace=False,low_memory=True,memory_map=False,
                  float_precision=None)

6. 详细的说明

将表格型数据读取为DataFrame对象是pandas的重要特性。read_csv和read_table应该是使用最多的函数。
在这里插入图片描述

假设想要message列成为返回DataFrame的索引,则可以指定位置4的列为索引,或将’message’传给参数index_col:

#有时候数据文件没有表头,所以自己定义一下column名称#
import pandas as pd
names = ['a', 'b', 'c' ,'d', 'message']
pd.read_csv('ex1.csv', names=names, index_col='message')

message a b c d # 以message为索引
hello 1 2 3 4
world 5 6 7 8
foo 9 10 11 12

d = pd.DataFrame({
   'key1' : ['one', 'one', 'one', 'two', 'two', 'two'],
                 'key2' : ['a', 'b' ,'c' ,'a' ,'b' ,'c'],
                 'v1' : [1,3,5,7,9,11],
                 'v2' : [2,4,6,8,10,12]})
print(d)
'''
  key1 key2  v1  v2
0  one    a   1   2
1  one    b   3   4
2  one    c   5   6
3  two    a   7   8
4  two    b   9  10
5  two    c  11  12
'''
d.to_csv('csv_mindex.csv', index=False) # 取消索引的存储 以防后序读取出现错误
'''
key1,key2,v1,v2
one,a,1,2
one,b,3,4
one,c,5,6
two,a,7,8
two,b,9,10
two,c,11,12
'''

# 从多个列中形成一个分层索引
parsed = pd.read_csv('csv_mindex.csv', index_col=['key1', 'key2']) 
print(parsed)
'''
          v1  v2
key1 key2        
one  a      1   2
     b      3   4
     c      5   6
two  a      7   8
     b      9  10
     c     11  12

当字段是以多种不同数量的空格分开时,尽管你可以手工处理,但在这些情况下也可以向read_table传入一个正则表达式作为分隔符。在本例中,正则表达式为\s+,因此我们可以得到:

In [91]: reslut = pd.read_table('ex3.txt', sep='\s+')

In [92]: reslut
Out[92]:
        A        B      C
aaa -2.00  -4.0000  -6.00
bbb -3.00  23.0000  21.00
ccc -1.23   0.2255   9.12

上例中,由于列名的数量比数据的列数少一个,因此read_table推断第一列应当作为DataFrame的索引。

在这里插入图片描述

使用DataFrame的to_csv方法,可以将数据导出为逗号分隔的文件,当然,其他的分隔符也是可以的:

In [13]: data = pd.DataFrame(np.arange(12).reshape((3,4)),
    ...: index=['a', 'b', 'c'],
    ...: columns=['one', 'two', 'three', 'four'])

In [14
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值