# -*-coding:utf-8 -*-
# author:lz
import pandas as pd
# 定义一个类,该类中含有能够读取任意文件到内存
class util:
def readFile(self,path):
'''
利用pandas模块
pandas提供了一些用于将表格型数据读取为DataFrame对象的函数,常用的有:
read_csv() :从文件、URL、文件类型对象中加载带分隔符的数据,默认分隔符为逗号
read_excel() :
read_table() :从文件、URL、文件类型对象中加载带分隔符的数据,默认分隔符制表符(“\t”)
1、列名的问题
# 读取没有列名的csv(pandas会默认第一行的数据为列名,如果第一行不是列名而是有效数据,就称csv没有列名)
read_csv(path, # 路径
header=None # 表明原表没有列名,采用panads为其默认分配的列名
)
read_csv(path, # 路径
names=[第一列,第二列,第三列...] # 表明原表没有列名,自定义列名
)
2、单索引的问题
read_csv(path, # 路径
header=None # 表明原表没有列名
names=[第一列,第二列,第三列,第四列...] # 表明原表没有列名,自定义列名
index_col = '第四列' # 表明将第四列作为索引
)
3、层次索引问题
read_csv(path, # 路径
names=[第一列,第二列,第三列,第四列...] # 表明原表没有列名,自定义列名
index_col = ['第三列','第四列'] # 表明将第三列和第四列作为层次索引,其中第三列为第一层索引,第四列为第二层索引
)
4、需要忽略的行号:
read_csv(path, # 路径
names=[第一列,第二列,第三列,第四列...] # 表明原表没有列名,自定义列名
index_col = ['第三列','第四列'] # 表明将第三列和第四列作为层次索引,其中第三列为第一层索引,第四列为第二层索引
skiprows=[0,3,5] # 从头开始跳过第0、3、5行
skip_footer=4 # 从文件末尾算起,忽略4行。
nrows=4 # 从文件头开始,读取4行。
)
5、尝试将数据解析为日期
DataFrame df = read_csv(path, # 路径
parse_dates=True # 尝试解析索引
parse_dates=['日期','时间'] # 单独解析两列
parse_dates=[['日期','时间']] # 自动将日期时间两列合起来进行解析,并生成一个名为“日期_时间”的新列代替原来的两列
------>其实利用这个方法,可以将任意指定的两行进行合并成新的一行。
parse_dates={'日时':['日期','时间']} # 自动将日期时间两列合起来进行解析,并生成一个名为“日时”的新列代替原来的两列
keep_date_col=True # 当有多列日期时间参与合并后解析时,如果还需要保留原来的列,则使用这个参数。
)
6、迭代的读取(返回的是迭代器)
Iterator TextFileReader = read_csv(path, # 路径
iterator=True,# 迭代的读取
chunksize=10 # 每次迭代的块的大小
)
:param path: 输入要读取文件的路径
:return: 返回一个DataFrame对象
'''
df = pd.read_excel(path,parse_dates="发布时间")
return df
def sortDataframe(self,df):
'''
# 写在前边:
# 数字就按数字的大小进行排序
# 字母按照字典顺序排序
# 日期时间按照前后进行排序
DataFrame df1 = df.sort_index(axis=0 # 0表示按照行名排序,1按照列名排序
ascending=True # True为升序,False为降序
)
DataFrame df1 = df.sort_values(axis=0 # 默认按照列排序,即纵向排序;如果为1,则是横向排序。
by='按这列排序'
ascending=True # True为升序,False为降序
)
DataFrame df1 = df.sort_values(axis=0
by=['按这列排序','按这列排序']
ascending=[True,False]
)
DataFrame df1 = df.sort_values(axis=0
by='按这列排序'
inplace=False # False表示排序后生成一个新的DataFrame,True表示生成一个新的DataFrame并覆盖掉当前的df
)
df.sort_values(axis=0
by='按这列排序'
inplace=True
)
注意:df. sort_index()可以完成和df. sort_values()完全相同的功能,
但python更推荐用只用df. sort_index()对“根据行标签”和“根据列标签”排序,
其他排序方式用df.sort_values()。
df1.reset_index(drop=True,
inplace=True
)# 排序后索引乱序,需要重新索引
:param df:
:return:
'''
pass
pandas读取文件
最新推荐文章于 2024-03-22 14:51:06 发布