Python中有许多方便的库可以用来进行数据处理,尤其是Numpy和Pandas,再搭配matplot画图专用模块,功能十分强大。
本文除了介绍pandas处理 csv文件外,分步骤逐渐介绍处理其他excel文件的方法,并配合Numpy 做一些运算,用图像方式展示出来。
一:pandas处理 csv文件
1,csv 文件读取 pandas.read_csv()
注意:其中此处添加路径可以是csv文件,也可以读取txt文件,而txt格式可以用pandas.pd.read_table() 读取
def analysis_csv():
csv_list = get_csv_file()
for each_file in csv_list:
with open(each_file,"r") as f:
data=pd.read_csv(f,nrows=100, skiprows=1,header =0,skip_blank_lines = True,index_col =None)
print(data)
# print(data.head())
# print(data.shape)
# print(data.tail(1))
# print(data.columns) #获取列的索引
data1 =data['CPU1_0x24']
data =data1
data.to_excel(os.path.join(data_dir,'test1.csv'),mode ='w',index =1,index_label='test')
注释:
1,nrows=100 限制读取多少行,其他多余的忽略
2,header=0 默认无表头,输出内容包含首行
3,skip_blank_lines = True 跳过表格中的空格行
4,index_col =None 添加索引列,也可避免首列出现 0 1 2 3 的索引数字
5,print(data) 输出文件内容数据
6,print(data.head()) 默认输出文件的前5行,可加 数字自主设置打印几行数据,data.head(10)
7,print(data.tail()) 默认输出最后5行数据,用法同head()
8,data.columns 获取索引列,一般默认都是首行组成列表
9,data1 =data['CPU1_0x24']
data =data1
data.to_csv(os.path.join(data_dir,'test1.csv'),mode ='w',index =1,index_label='test')
对新建的文件进行写操作,data 里面'CPU1_0x24' 列赋值data1时,再将数据to_csv写入问价
10,index =1 在写入文件中会增加一列从第二行开始的 0 1 2 3 索引数
11,index_label='test' 把(1,1)cell内写入'test' 数据
13,一般mode = w 新建或者覆盖 a 追加写入 r 读取
14,skiprows -0 输出时忽略了首行
二:pandas处理 csv文件的行、列操作
1,csv文件行、列操作
data_dir = os.path.join(os.getcwd(),'LOG_cat')
with open(os.path.join(data_dir,'test.csv'),'r') as f:
r_read =pd.read_csv(f)
print(r_read)
print(r_read.loc[2:3])
print(r_read[['car','test']])
print(r_read.iloc[1,4:])
df = r_read.dropna(axis=1,how='any')
print(df['car'])
注释:
1, print(r_read) 输出整个文件
2, print(r_read.loc[2:3]) 输出第3-4行数据
3,print(r_read[['car','test']]) 输出['car','test'] 列,但必须组成list
4,df = r_read.dropna(axis=1)
print(df['car'])
也是输出car列的数据
5, print(r_read.iloc[0:4,3:])输出0-4行数据中的第四个开始
三:pandas 对xlsx文件操作
使用参数
pd.read_excel(path, sheet_name=0, header=0, names=None, index_col=None,
usecols=None, squeeze=False,dtype=None, engine=None,
converters=None, true_values=None, false_values=None,
skiprows=None, nrows=None, na_values=None,parse_dates=False,
date_parser=None, thousands=None, comment=None, skipfooter=0,
convert_float=True, **kwds)
注释:
1,path 文件路径
2,sheet_name=0==》 s sheet_name='test'指定读取sheet名,不指定的话,默认时第一行
data_dir = os.path.join(os.getcwd(),'LOG_cat')
file_path =os.path.join(data_dir,'模板.xlsx')
df =pd.read_excel(os.path.join(data_dir,'模板.xlsx'),sheet_name='test')
data =df.head(1)#data =df.head(1) 输出前5行,可自行设置显示
===========================================================
df =pd.read_excel(os.path.join(data_dir,'模板.xlsx'),sheet_name=['test1','test0'])
'''1,sheet_name=['test1','test0'] 为读取sheet名组成的list'''
'''2,data =df.values() 字典,我们print(df.keys()) dict_keys(['test1', 'test0'])
df 是sheet名与内容组成的字典即 data =df.values() 为sheet页内容'''
3,header=0 指定行作为列名,header = [0,1] 指定前2行为列名
4,names=None 自定义列名,一般适用于Excel缺少列名,或者需要重新定义列名的情况
5,index_col=None 索引列 index_col = 'car' 多列-index_col = [0, 1]
6,usecols=None 读取指定列,usecols = [0, 1, 2] 例如:读取1,2,3列参数
usecols = 'A:C, E'此种为区间段和单个列
7,squeeze=False,squeeze为True时,返回Series,反之返回DataFrame
8,skiprows=None ,跳过指定行,skiprows= n, 跳过前n行; skiprows = [a, b, c],跳过第a+1,b+1,c+1行(索引从0开始)
9.nrows=None,读取指定行数, nrows = 10 ,即读取10行数据
10,skipfooter=0 # skipfooter = n, 跳过末尾0-n行(索引从0开始)
11,converters=None,读数据的时候使用converters指定列数据的数值类型 pd.read_excel('a.xlsx',converters={0: str}),pandas默认将文本类的数据读取为整型),主要用途:保留以文本形式存储的数字
pandas 对xlsx文件行列操作
1,新增加一列
data_dir = os.path.join(os.getcwd(),'LOG_cat')
file_path =os.path.join(data_dir,'模板.xlsx')
print(file_path)
df =pd.read_excel(os.path.join(data_dir,'模板.xlsx'),sheet_name='test1')
df['car'] ='1'
df.to_excel(os.path.join(data_dir,'模板.xlsx'),sheet_name='test1', index=False)
# pd.DataFrame(df).to_excel(os.path.join(data_dir,'模板.xlsx'), sheet_name='test1', index=False, header=False)
注释:
1,df['car'] ='1' 新增加一列为car 的列内容都为1,为NONE默认添加列内容为空,也可以是列表,分别对应每个表格数据。
2,df.to_excel()新增列保存,
另一中保存方式,pd.DataFrame(df).to_excel
2,新增加行操作
通过DataFrame 进行行的添加
df=pd.DataFrame(numpy.arange(16).reshape((4,4)),index=['a','b','c','d'],columns=['one','two','three','four'])
df.loc['new_row'] = 'ss'
df['new_col'] ='1234567'
print(df)
注释:
1,当为DataFrame 时,可使用df.loc['new_row'] = 'ss' 添加新的一行,默认最后一行。
2,当为DataFrame 时,使用df['new_col'] ='1234567' 新增加一列,默认最后一列。
添加行 合并两个dataframe 达到添加行数据,
df=pd.DataFrame(numpy.arange(16).reshape((4,4)),index=['a','b','c','d'],columns=['one','two','three','four'])
df2 = pd.DataFrame([6,6,6,6]).T
df2.columns = df.columns
df_new = pd.concat([df,df2],ignore_index=True)
print(df_new)
注释:
1,定义新的一行df2 = pd.DataFrame([6,6,6,6]).T
2,df2.columns = df.columns 新定义的列赋值,保证一样
三:删除xlsx内信息
df =pd.read_excel(os.path.join(data_dir,'模板.xlsx'))
df =df.drop([1,2],axis =0)
df =df.drop(['car'],axis =1)
df.to_excel(os.path.join(data_dir,'模板.xlsx'))
注释:
1,当,axis =0 ,删除行,索引是第几行
2,当,axis =1,删除是列,car 为列名,保存文件后即生效。
axis=1,inplace='True' 这两个参数结合,可以改变或不改变内存,从而不改变原数据,大家可自行搜索
四:numpy 模块使用
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:
一个强大的N维数组对象 ndarray
广播功能函数
整合 C/C++/Fortran 代码的工具
线性代数、傅里叶变换、随机数生成等功能
补充:
因前段时间重新编写demo,使测试结果自动化分析,特意整理openpyxl资料,以备以后使用,也希望能帮到大家。
https://blog.csdn.net/weixin_42914706/article/details/113474029
dataframe 数据拼接整理
https://blog.csdn.net/weixin_42914706/article/details/123899640
python-之EXCEL处理-xlsx-文件处理-openpyxl
https://blog.csdn.net/weixin_42914706/article/details/113474029