目次
3.1 Excel および CSV ファイルに対する Pandas の読み取りおよび書き込み操作
ではpython
、、 、などexcel
、データを読み書きする方法がたくさんありますが、実は制約が多く、あまり便利ではありません。たとえば、これもサポートされていません。xlrd
xlwt
openpyxl
openpyxl
csv格式
データを特別に処理するわけではないpandas
が、データの処理に便利な、より優れた方法を使用することができます。pandas
excel
excel
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)))