Python - pandas ライブラリを使用したファイルの処理

目次

3.1 Excel および CSV ファイルに対する Pandas の読み取りおよび書き込み操作

3.2 データに対するパンダ操作

3.3 pandas はデータフィルタリングを実装します

3.4 データの削除


ではpython、 、などexcel、データを読み書きする方法がたくさんありますが、実は制約が多く、あまり便利ではありません。たとえば、これもサポートされていませんxlrdxlwtopenpyxlopenpyxlcsv格式

データを特別に処理するわけではないpandasが、データの処理に便利な、より優れた方法を使用することができます。pandasexcelexcel

pandas 操作を実行する前に、まず pandas によって表示される行と列を設定できます。

#すべての列を表示
pd.set_option('display.max_columns', None) 
#すべての行を表示
pd.set_option('display.max_rows', None) #
値の表示長を 100 に設定します。デフォルトは 50 です
pd.set_option( 'max_colwidth ',100)

1 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 つのパンダ操作

列名に従ってデータを出力します。各列はシリーズであり、インデックスが出力されます。その値を取得するには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 関数は行の位置ではなくラベル (インデックス) を見つけます。loc 関数の最初のパラメーターは行に対する操作であり、2 番目のパラメーターは列に対する操作です。

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

iloc 関数は行の位置を特定します。iloc 関数の最初のパラメーターは行に対する演算であり、2 番目のパラメーターは列に対する演算です。

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

したがって、iloc を使用して Excel セルのデータを取得できます。

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

3 パンダはデータ フィルタリングを実装します

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)))

おすすめ

転載: blog.csdn.net/longhaierwd/article/details/131986922