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
分别在终端运行这两条语句,安装模块
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()
运行结果:
注意打开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