>백엔드 개발 >파이썬 튜토리얼 >Python의 Pandas 라이브러리로 Excel 데이터를 처리하는 방법은 무엇입니까?

Python의 Pandas 라이브러리로 Excel 데이터를 처리하는 방법은 무엇입니까?

WBOY
WBOY앞으로
2023-05-08 21:49:183394검색

1. xlsx 테이블 읽기: pd.read_excel()

원본 내용은 다음과 같습니다.

Python의 Pandas 라이브러리로 Excel 데이터를 처리하는 방법은 무엇입니까?

a) n번째 시트의 데이터를 읽습니다. (하위 시트는 에서 보거나 추가하거나 삭제할 수 있습니다.) 왼쪽 하단)

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 함수가 기본값이기 때문입니다. 테이블의 첫 번째 줄을 열 인덱스 이름으로 지정합니다. 또한 행 인덱스 이름의 경우 기본적으로 두 번째 행부터 번호가 매겨집니다(기본 첫 번째 행은 열 인덱스 이름이므로 기본 첫 번째 행은 데이터가 아니기 때문입니다). 별도로 지정하지 않으면 다음과 같이 자동으로 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번째 열을 행 인덱스 이름으로 지정할 수도 있습니다.

# 指定第一列为行索引
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) 건너뛰기 행 데이터를 읽을 때 n번째 열

# 跳过第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. 테이블의 데이터 크기를 가져옵니다. 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 방식, 정수로 인덱스

를 사용합니다. sheet.iloc [ ] 인덱스, 대괄호는 행과 열의 정수 위치 번호입니다(열을 행 인덱스로, 행을 열 인덱스로 제외하고 0부터 번호 매기기 시작).
a) sheet.iloc[1, 2]: 행 2, 열 3데이터를 추출합니다. 첫 번째는 행 인덱스, 두 번째는 열 인덱스입니다.

b) sheet.iloc[0:2]: 처음 두 행data

c)sheet.iloc[0:2, 0 추출 : 2]: sharding

# 指定第一列数据为行索引
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 과 동일합니다. 이 인덱싱 방법은 사용하기 더 직관적입니다.

Note: iloc[1: 2]에는 2가 포함되지 않지만 loc['row1': 'row2']에는 'row2'가 포함됩니다.

# 指定第一列数据为行索引
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. numpy 라이브러리의 isnan() 또는 isnull() pandas 라이브러리를 사용하여 비어 있는지 확인합니다. 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. 요소 값 수정: replacement()

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]: 값이 [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인 name_add라는 열을 추가합니다. 데이터 삭제: 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 행 삭제 , 삭제 열의 경우 해당 축=1입니다.

inplace 매개변수가 True인 경우 매개변수가 반환되지 않고 원본 데이터에서 직접 삭제됩니다.

inplace 매개변수가 False(기본값)인 경우 원본 데이터는 수정되지 않지만 수정된 데이터는 삭제됩니다. return

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. file: to_excel()

1. pandas 형식의 데이터를 .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')

Python의 Pandas 라이브러리로 Excel 데이터를 처리하는 방법은 무엇입니까?

2. 수정된 Excel 파일을 .xlsx 파일로 저장합니다.

예를 들어 원본 테이블의 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 데이터를 처리하는 방법은 무엇입니까?

위 내용은 Python의 Pandas 라이브러리로 Excel 데이터를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제