ホームページ >バックエンド開発 >Python チュートリアル >Python の Pandas ライブラリを使用して Excel データを処理するにはどうすればよいですか?

Python の Pandas ライブラリを使用して Excel データを処理するにはどうすればよいですか?

WBOY
WBOY転載
2023-05-08 21:49:183399ブラウズ

1. xlsx テーブルの読み取り: pd.read_excel()

元の内容は次のとおりです:

Python の Pandas ライブラリを使用して Excel データを処理するにはどうすればよいですか?

a) n 番目のテーブルを読み取ります。シート (サブテーブル。左下のサブテーブルを表示または追加または削除できます) data

import pandas as pd
# 每次都需要修改的路径
path = "test.xlsx"
# sheet_name默认为0,即读取第一个sheet的数据
sheet = pd.read_excel(path, sheet_name=0)
print(sheet)
"""
  Unnamed: 0  name1  name2  name3
0       row1      1    2.0      3
1       row2      4    NaN      6
2       row3      7    8.0      9
"""

元のフォームの左上隅にコンテンツがないことがわかります。 、読み取り結果は "Unnamed : 0" になります。これは、read_excel 関数が デフォルトでテーブルの最初の行を列インデックス名 として設定するためです。さらに、行インデックス名については、デフォルトで 2 行目から番号が付けられます (デフォルトの最初の行は列インデックス名であり、デフォルトの最初の行はデータではないため)。特に指定しない場合、番号付けは自動的に 0 から始まります。が続きます。

sheet = pd.read_excel(path)
# 查看列索引名,返回列表形式
print(sheet.columns.values)
# 查看行索引名,默认从第二行开始编号,如果不特意指定,则自动从0开始编号,返回列表形式
print(sheet.index.values)
"""
['Unnamed: 0' 'name1' 'name2' 'name3']
[0 1 2]
"""

b) 列インデックス名 は次のようにカスタマイズすることもできます:

sheet = pd.read_excel(path, names=['col1', 'col2', 'col3', 'col4'])
print(sheet)
# 查看列索引名,返回列表形式
print(sheet.columns.values)
"""
   col1  col2  col3  col4
0  row1     1   2.0     3
1  row2     4   NaN     6
2  row3     7   8.0     9
['col1' 'col2' 'col3' 'col4']
"""

c) n 番目の列を行インデックスとして指定することもできますname 、次のように:

# 指定第一列为行索引
sheet = pd.read_excel(path, index_col=0)
print(sheet)
"""
      name1  name2  name3
row1      1    2.0      3
row2      4    NaN      6
row3      7    8.0      9
"""

d)

# 跳过第2行的数据(第一行索引为0)
sheet = pd.read_excel(path, skiprows=[1])
print(sheet)
"""
  Unnamed: 0  name1  name2  name3
0       row2      4    NaN      6
1       row3      7    8.0      9
"""

2 を読み取るときにデータの n 行目をスキップします。テーブルのデータ サイズを取得します:shape

path = "test.xlsx"
# 指定第一列为行索引
sheet = pd.read_excel(path, index_col=0)
print(sheet)
print('==========================')
print('shape of sheet:', sheet.shape)
"""
      name1  name2  name3
row1      1    2.0      3
row2      4    NaN      6
row3      7    8.0      9
==========================
shape of sheet: (3, 3)
"""

3. データのインデックス付け方法: [ ] / loc[] / iloc[]

1. 角括弧を直接追加してインデックスを付ける

角括弧を使用して列名を追加できます。メソッド [col_name] を使用して特定の列のデータを抽出し、角括弧とインデックス番号 [index] を使用してインデックスを作成します。この列の特定の位置の値。ここでは、name1 という名前の列にインデックスが付けられ、列の 1 行目にあるデータ (インデックスは 1) が出力されます: 4、次のように:

sheet = pd.read_excel(path)
# 读取列名为 name1 的列数据
col = sheet['name1']
print(col)
# 打印该列第二个数据
print(col[1]) # 4
"""
0    1
1    4
2    7
Name: name1, dtype: int64
4
"""

2、iloc メソッド、index by整数

sheet.iloc[ ] インデックスを使用します。角括弧は行と列の整数の位置番号です (行インデックスとして列を除外した後、0 から始まります)列インデックスとしての行 (シリアル番号)。
a)sheet.iloc[1, 2]: 行 2、列 3 データを抽出します。 1 つ目は行インデックス、2 つ目は列インデックスです。

b)sheet.iloc[0: 2]: 最初の 2 行 data## を抽出します。

#c)sheet.iloc[0:2, 0:2]: シャーディングを通じて 最初の 2 行 最初の 2 列 データを抽出します。

# 指定第一列数据为行索引
sheet = pd.read_excel(path, index_col=0)
# 读取第2行(row2)的第3列(6)数据
# 第一个是行索引,第二个是列索引
data = sheet.iloc[1, 2]
print(data)  # 6
print('================================')
# 通过分片的方式提取 前两行 数据
data_slice = sheet.iloc[0:2]
print(data_slice)
print('================================')
# 通过分片的方式提取 前两行 的 前两列 数据
data_slice = sheet.iloc[0:2, 0:2]
print(data_slice)
"""
6
================================
      name1  name2  name3
row1      1    2.0      3
row2      4    NaN      6
================================
      name1  name2
row1      1    2.0
row2      4    NaN
"""

3. loc メソッド、行名と列名によるインデックス

sheet.loc[ ] インデックスを使用、角かっこは 行と行 名前文字列 。具体的な使用法は iloc と同じですが、iloc の整数インデックスが行と列の名前インデックスに置き換えられる点が異なります。このインデックス作成方法は、より直感的に使用できます。

: iloc[1: 2] には 2 が含まれませんが、loc['row1': 'row2'] には 2 が含まれます。 「行2」。

# 指定第一列数据为行索引
sheet = pd.read_excel(path, index_col=0)
# 读取第2行(row2)的第3列(6)数据
# 第一个是行索引,第二个是列索引
data = sheet.loc['row2', 'name3']
print(data)  # 1
print('================================')
# 通过分片的方式提取 前两行 数据
data_slice = sheet.loc['row1': 'row2']
print(data_slice)
print('================================')
# 通过分片的方式提取 前两行 的 前两列 数据
data_slice1 = sheet.loc['row1': 'row2', 'name1': 'name2']
print(data_slice1)
"""
6
================================
      name1  name2  name3
row1      1    2.0      3
row2      4    NaN      6
================================
      name1  name2
row1      1    2.0
row2      4    NaN
"""

4. データが空かどうかを判断します: np.isnan() / pd.isnull()

1. isnan()

または ## の を使用します。 #numpy ライブラリ pandas ライブラリの isnull() メソッドは、nan と等しいかどうかを判断します。

sheet = pd.read_excel(path)
# 读取列名为 name1 的列数据
col = sheet['name2']
 
print(np.isnan(col[1]))  # True
print(pd.isnull(col[1]))  # True
"""
True
True
"""
2. str() を使用して文字列に変換し、

'nan'

と等しいかどうかを判断します。

sheet = pd.read_excel(path)
# 读取列名为 name1 的列数据
col = sheet['name2']
print(col)
# 打印该列第二个数据
if str(col[1]) == 'nan':
    print('col[1] is nan')
"""
0    2.0
1    NaN
2    8.0
Name: name2, dtype: float64
col[1] is nan
"""
5. 条件を満たすデータを検索します

次のコードを理解しましょう

# 提取name1 == 1 的行
mask = (sheet['name1'] == 1)
x = sheet.loc[mask]
print(x)
"""
      name1  name2  name3
row1      1    2.0      3
"""

6. 要素の値を変更します: replace()

#sheet['name2'].replace(2, 100, inplace=True)

: 列 name2 の要素 2 を要素 100 に変更し、その場で操作します。

sheet['name2'].replace(2, 100, inplace=True)
print(sheet)
"""
      name1  name2  name3
row1      1  100.0      3
row2      4    NaN      6
row3      7    8.0      9
"""
sheet['name2'].replace(np.nan, 100, inplace=True)

: name2 列の空の要素 (nan) を要素 100 に変更し、次のように操作します。場所 。

import numpy as np 
sheet['name2'].replace(np.nan, 100, inplace=True)
print(sheet)
print(type(sheet.loc['row2', 'name2']))
"""
      name1  name2  name3
row1      1    2.0      3
row2      4  100.0      6
row3      7    8.0      9
"""
7. データの追加: [ ]

列を追加するには、角括弧 [追加する名前] を直接使用して追加します。

sheet['name_add'] = [55, 66, 77]

: name_add という名前の列を値 [55, 66, 77]

path = "test.xlsx"
# 指定第一列为行索引
sheet = pd.read_excel(path, index_col=0)
print(sheet)
print('====================================')
# 添加名为 name_add 的列,值为[55, 66, 77]
sheet['name_add'] = [55, 66, 77]
print(sheet)
"""
      name1  name2  name3
row1      1    2.0      3
row2      4    NaN      6
row3      7    8.0      9
====================================
      name1  name2  name3  name_add
row1      1    2.0      3        55
row2      4    NaN      6        66
row3      7    8.0      9        77
"""
で追加します。 8. データの削除: del() /drop()

a) del(sheet['name3'])

: del メソッドを使用して

sheet = pd.read_excel(path, index_col=0)
# 使用 del 方法删除 'name3' 的列
del(sheet['name3'])
print(sheet)
"""
      name1  name2
row1      1    2.0
row2      4    NaN
row3      7    8.0
"""
# を削除します##b)sheet.drop('row1', axis=0)

drop メソッドを使用して row1 行を削除します。列が削除されると、対応する axis=1 になります。 inplace パラメータが True の場合、パラメータは返されず、元のデータから直接削除されます。

inplace パラメータが False (デフォルト) の場合、元のデータは削除されませんData

sheet.drop('row1', axis=0, inplace=True)
print(sheet)
"""
      name1  name2  name3
row2      4    NaN      6
row3      7    8.0      9
"""

c)sheet.drop(labels=['name1', 'name2'], axis=1)

複数の行または列を削除するには、label=[ ] パラメータを使用します

# 删除多列,默认 inplace 参数位 False,即会返回结果
print(sheet.drop(labels=['name1', 'name2'], axis=1))
"""
      name3
row1      3
row2      6
row3      9
"""
9. Excel ファイルに保存します: to_excel()

1. データをパンダ形式で保存します。 .xlsx ファイル

names = ['a', 'b', 'c']
scores = [99, 100, 99]
result_excel = pd.DataFrame()
result_excel["姓名"] = names
result_excel["评分"] = scores
# 写入excel
result_excel.to_excel('test3.xlsx')

2. 変更した Excel ファイルを .xlsx ファイルとして保存します。 Python の Pandas ライブラリを使用して Excel データを処理するにはどうすればよいですか?

たとえば、元のテーブルの nan を 100 に変更した後、ファイルを保存します:

import numpy as np 
# 指定第一列为行索引
sheet = pd.read_excel(path, index_col=0)
sheet['name2'].replace(np.nan, 100, inplace=True)
sheet.to_excel('test2.xlsx')
test2.xlsx を開くと、結果は次のようになります:

以上がPython の Pandas ライブラリを使用して Excel データを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。