python-之EXCEL处理-csv文件-pandas处理-1

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 的索引数字
 5print(data) 输出文件内容数据
 6print(data.head()) 默认输出文件的前5行,可加  数字自主设置打印几行数据,data.head(10)
 7print(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'  把(11)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'])
  
注释:
1print(r_read) 输出整个文件
2print(r_read.loc[2:3]) 输出第3-4行数据
3print(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行数据中的第四个开始
python-之EXCEL处理-csv文件-pandas处理-1_第1张图片

三: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] 例如:读取123列参数
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' 新增加一列,默认最后一列。

输出如图:
python-之EXCEL处理-csv文件-pandas处理-1_第2张图片

添加行 合并两个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 新定义的列赋值,保证一样

输出如图:
python-之EXCEL处理-csv文件-pandas处理-1_第3张图片

三:删除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

你可能感兴趣的:(数据分析,数据分析)