Python---外部文件的存取

文本文件的读取

Pandas模块中的read_csv函数,可以读取txt或csv(逗号分隔的文本文件)文本格式数据。

1.读取txt文本数据

2.36.TXT:
数据来源:公司人事记录
时间范围:2019.1.1~2019.6.30
year,month,day,gender,name,income
2019,3,7,男,张三,6&000
#2019,5,2,男,李四,13&000
2019,2,1,女,王玲,8&000
内部数据,不要外传!
2019年3月

千万注意:此txt的编码格式为:utf,且路径无中文
否则会报错:‘utf-8’ codec can’t decode byte 0xca in position 0: invalid continuation byte

#读取txt文本数据
import pandas as pd
a=pd.read_csv("2.36.txt",sep=',',
              parse_dates={'birthday':[0,1,2]},skiprows=2,skipfooter=2,
              comment='#',thousands='&',engine='python')

#parse_dates参数通过字典实现前三列的日期解析,并合并为新字段birthday
#skiprows:数据读取时,指定需要跳过原数据集开头的行数。
#skipfooter:数据读取时,指定需要跳过原数据集末尾的行数。
#thousand:指定数据集的千分位符
#  comment='#'  :此行为注释
print(a)


运行结果:
birthday gender name income
0 2019-03-07 男 张三 6000
1 2019-02-01 女 王玲 8000

提取excel数据
excel内容:
2

分别在终端运行这两条语句,安装模块
pip install xlrd
pip install openpyxl

import pandas as pd
a=pd.read_excel("Pdata2_33.xlsx",usecols=range(1,4))  #提取第2到4列的数据
b=a.values #提取数据
c=a.describe()  #对数据进行统计
print(c)

运行结果:

          用户A         用户B         用户C

count 9.000000 9.000000 8.000000
mean 237.167778 335.235556 493.886875
std 1.021161 65.198685 28.565643
min 235.830000 206.430000 435.350000
25% 236.270000 324.030000 484.147500
50% 237.410000 328.080000 501.282500
75% 238.030000 388.020000 515.645000
max 238.650000 404.040000 517.090000

注意:count::列的行数 ; mean:平均值; std:标准差
min:最小值; %:分位数; max:最大值

#读入Excel文件Pdata2_33.xlsx中的数据,
#然后写入另一个文件Pdata2_34.xlsx中的两个表单“sheet1”和“sheet2”中。

#读入Excel文件Pdata2_33.xlsx中的数据,
#然后写入另一个文件Pdata2_34.xlsx中的两个表单“sheet1”和“sheet2”中。


import pandas as pd
import numpy as np
a=pd.read_excel("Pdata2_33.xlsx",usecols=range(1,4))  #提取2-4列数据
b=a.values  #提取其中的数据


#生成DataFrame类型数据
c=pd.DataFrame(b,index=np.arange(1,11),columns=["用户A","用户B","用户C"])
f=pd.ExcelWriter("Pdata2_34.xlsx")  #创建文件对象
c.to_excel(f,"sheet1")
c.to_excel(f,"sheet2")
f.save()

运行结果:
2
注意打开excel文件的时候,会显示“只读”,除非关闭代码运行界面

数据子集

iloc只能通过行号和列号进行数据的筛选,该索引方式与数组的索引方式类似,都是从0开始,可以间隔取号,对于切片仍然无法取到上限。
loc可以指定具体的行标签(行名称)和列标签(字段名),而且,还可以将row_select指定为具体的筛选条件。

读取用户A和用户B的前六个数据

#读取用户A和用户B的前六个数据
import pandas as pd
import numpy as np
a=pd.read_excel("Pdata2_33.xlsx",usecols=range(1,4))   #提取2--4列数据
b1=a.iloc[np.arange(6),[0,1]]   #通过标号筛选数据
b2=a.loc[np.arange(6),["用户A","用户B"]]    #通过标签筛选数据
print(b1)
print('\n')
print(b2)

运行结果:
用户A 用户B
0 235.83 324.03
1 236.27 325.63
2 238.05 328.08
3 235.90 NaN
4 236.76 268.82
5 NaN 404.04

  用户A     用户B

0 235.83 324.03
1 236.27 325.63
2 238.05 328.08
3 235.90 NaN
4 236.76 268.82
5 NaN 404.04

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值