Python——使用pandas库处理文件

目录

3.1 pandas对excel、csv文件的读写操作

3.2 pandas对数据的操作

3.3 pandas实现对数据的筛选

3.4 删除数据


python中,读写excel数据方法很多,比如xlrdxlwtopenpyxl,实际上限制比较多,不是很方便。比如openpyxl也不支持csv格式

更好的方法可以使用pandas,虽然pandas不是专门处理excel数据,但处理excel数据更方便。

在进行pandas操作前,可以先设置pandas显示的行和列:

#显示所有列
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)
#设置value的显示长度为100,默认为50
pd.set_option('max_colwidth',100)

1 pandas对excel、csv文件的读写操作

import pandas as pd
​
# df是pandas.core.frame.DataFrame类型,读取excel文件
df = pd.read_excel('./data.xlsx')
print(df) #打印文件
# read_csv可以指定分割符,编码方式等
​
#读取csv文件
df2 = pd.read_csv('data.csv')
print(df2) #打印文件

2 pandas对数据的操作

按照列名打印数据,每一列为一个Series,会将索引打印出来,使用values属性可以得到其值,使用index可以得到索引:

#得到列名
all_col = df.columns
print(list(all_col))
​
#按照每列获取数据
for key in list(all_col):
    print(key)
    print(df[f'{key}'].values)
    print(df[f'{key}'].index)

通过loc函数索引,loc函数定位的是标签(index),不是行的位置。loc函数的第一个参数是对行的操作,第二个参数是对列的操作。

#获取标签数据
print(df.loc[1])
​
print(df.loc[1:3])

iloc函数定位的是行的位置。iloc函数的第一个参数是对行的操作,第二个参数是对列的操作。

#按照位置获取行数据
print(df.iloc[[1,3],[2,5]])  #第一个参数是行,第二个参数是列,获取1和3行数据
print(df.iloc[1:3])

所以可以使用iloc获取excel单元格的数据:

#获取单元格数据
​
print(df.iloc[0][0])

3 pandas实现对数据的筛选

pandas中的contains方法可以实现对数据的筛选

包含一个值,na表示是否需要填充,case表示是否区分大小写,更强大的是contains还支持正则表达式

sub_df = df[ df[col_name].str.contains('key1', na=False, case=False) ]
​
# 包含多个值,多次调用即可
sub_df1 = df[ df[col_name].str.contains('key1', na=False, case=False) ]
sub_df2 = sub_df1[ sub_df1[col_name].str.contains('key2', na=False, case=False) ]
​
# 包含多个值(或) sub_df = df[ df[col_name].str.contains('key1|key2|key3', na=False, case=False) ]
​
# 不包含,也就是非的过滤
sub_df = df[ ~df[col_name].str.contains('key1', na=False, case=False) ]

条件过滤,筛选某列的数据:

# 包含一个值,na表示是否需要填充,case表示是否区分大小写,更强大的是contains还支持正则表达式
print(df[df['2015 总分'] > 1.5]) #筛选大于1.5的每行数据
​
#返回布尔值
print(df['2015 总分'] > 1.5)

写入一行数据:

# 插在最后,row_datas是list
​
df.loc[len(df.index)] = row_datas

写入一列数据:

# 在指定列前面插上一列数据
​
df.insert( col_index, col_name, col_datas, True)

更新数据:

#更新某个单元值
df.iloc[row][col] = u'new-data'

4 删除数据

axis = 1 指定删除一列数据

print(df.drop('2015 总分',axis=1, inplace=False))

axis = 0 指定删除一行数据

print(len(df)) #函数
print(df.drop(1,axis=0, inplace=False))
print(len(df.drop(1,axis=0, inplace=False)))

你可能感兴趣的:(python,pandas,开发语言)