樂趣Python——辦公魔法:Excel與CSV自動化處理

揭開 Excel 和 CSV 自動化處理的神秘面紗

歡迎你,親愛的朋友,來到了充滿魔力的辦公世界∏夂妫現(xiàn)在,我們站在了這個冒險旅程的起點(diǎn)家厌,那就是為何要學(xué)習(xí)Excel和CSV自動化處理播玖。

在這個信息爆炸的時代,數(shù)據(jù)成了我們眼前最善變且充滿魔力的挑戰(zhàn)像街,無論你是市場分析師黎棠、研究員晋渺、項(xiàng)目經(jīng)理,還是一個只想把日常工作變得更簡單實(shí)用的辦公室小白脓斩,自動化辦公都會點(diǎn)亮你遇見的每一個挑戰(zhàn)木西,成為你新的解決問題的武器。

首先随静,自動化辦公能夠讓你省下大量珍貴的時間和精力八千。想象一下,你之前每天都要花費(fèi)很多時間手動操作Excel表格或CSV文件燎猛,眼花繚亂的復(fù)制恋捆、粘貼數(shù)據(jù),都是很干巴的勞動重绷。而現(xiàn)在沸停,只需要運(yùn)用自動化處理技巧,你就可以輕松快速地完成這些任務(wù)昭卓,將時間花在更有趣愤钾、更有價值的事情上。

其次候醒,自動化辦公能夠提高你的工作準(zhǔn)確性能颁。手動操作往往容易出錯,一不小心就會產(chǎn)生各種烏龍倒淫,可謂是捉摸不定伙菊。但是通過自動化處理,你可以杜絕這些煩人的錯誤敌土,保持?jǐn)?shù)據(jù)的準(zhǔn)確性和一致性镜硕。這對于數(shù)據(jù)分析、報告生成以及業(yè)務(wù)決策至關(guān)重要纯赎,大大提升了你的專業(yè)形象哦谦疾!

那么,自動化辦公在哪些場景和需求中派上了用場呢犬金?
舉個例子念恍,當(dāng)你需要從Excel表格中提取數(shù)據(jù)并進(jìn)行分析時,自動化處理能夠幫助你快速準(zhǔn)確地完成任務(wù)晚顷。當(dāng)你需要清理峰伙、篩選和整理大量的CSV數(shù)據(jù)時,自動化處理能夠讓你事半功倍该默,輕松搞定這些繁重工作瞳氓。當(dāng)你需要對多個Excel和CSV文件進(jìn)行相同操作時,自動化處理能夠一次性完成任務(wù)栓袖,真是幫了大忙匣摘!簡而言之店诗,自動化辦公是辦公室小白的得力助手。

讓我們想象一下音榜,如果你有了魔法庞瘸,你的世界會變得怎樣?是的赠叼,你可以把眼前這些看似困難的挑戰(zhàn)一一化解擦囊,輕松完成原本枯燥乏味的任務(wù)。這就是使用Excel和CSV自動化處理魔法的目標(biāo)嘴办,讓你的工作變得更有效率瞬场,也讓你的人生更有樂趣。 那么涧郊,讓我們開始吧贯被!魔法等你穿越,你準(zhǔn)備好了嗎底燎?

召喚 Python 中的 openpyxl 和 pandas 魔法

在這里刃榨,你將認(rèn)識兩位非凡的魔法師:openpyxlpandas

首先双仍,讓我們認(rèn)識一下openpyxl這位魔法師。openpyxl是一個強(qiáng)大的Python庫桌吃,專門用于處理Excel文件朱沃。它可以幫助你讀取、寫入和操作Excel文件茅诱,實(shí)現(xiàn)各種復(fù)雜的任務(wù)逗物。不論是創(chuàng)建新的工作表、修改現(xiàn)有的數(shù)據(jù)瑟俭、格式化單元格還是執(zhí)行復(fù)雜的計(jì)算公式翎卓,openpyxl都能輕松應(yīng)對。

接下來摆寄,讓我們認(rèn)識一下pandas這位數(shù)據(jù)分析領(lǐng)域的魔法師失暴。pandas是一個流行且強(qiáng)大的Python庫,用于高效地處理和分析數(shù)據(jù)微饥。它提供了豐富的數(shù)據(jù)結(jié)構(gòu)和函數(shù)逗扒,能夠輕松處理各種數(shù)據(jù)操作,如數(shù)據(jù)清洗欠橘、篩選矩肩、聚合和轉(zhuǎn)換等。無論是讀取和寫入Excel文件肃续,還是處理CSV文件黍檩,pandas都能幫助你操作數(shù)據(jù)叉袍,掌握數(shù)據(jù)之力。

現(xiàn)在刽酱,讓我們一起召喚這兩位強(qiáng)大的魔法師吧喳逛!在你的Python環(huán)境中,確保已經(jīng)安裝了openpyxl和pandas庫肛跌,你可以使用以下命令來安裝它們:

第一步:

pip install openpyxl pandas

第二步:

import openpyxl

通過這個簡單的命令艺配,openpyxl魔法就來到了你的世界。它可以幫助你讀取和寫入Excel文件衍慎,處理各種復(fù)雜的任務(wù)转唉,如操作多個工作表、處理公式稳捆、設(shè)定單元格格式等赠法。你只需調(diào)用相關(guān)函數(shù),就能夠展示出你的Excel處理技巧乔夯。

接下來砖织,我們要與pandas這位數(shù)據(jù)魔法師相會。同樣末荐,請確保你已經(jīng)在Python環(huán)境中安裝了pandas庫侧纯。在你的代碼中,輸入以下命令:

import pandas

那么甲脏,pandas的魔法就會降臨到你的代碼中眶熬。它是數(shù)據(jù)處理和分析的強(qiáng)大工具,可讀取和寫入Excel和CSV文件块请,并提供各種功能娜氏,如數(shù)據(jù)篩選、清洗墩新、轉(zhuǎn)換以及統(tǒng)計(jì)分析等贸弥。通過調(diào)用pandas的函數(shù)和方法,你將能夠輕松處理龐大的數(shù)據(jù)集海渊。

通過以上準(zhǔn)備工作绵疲,你已經(jīng)成功召喚了openpyxl和pandas的魔法!現(xiàn)在切省,你可以為自己的Python代碼賦予強(qiáng)大的Excel和CSV處理能力了最岗。

初涉Excel、CSV處理:從讀取到寫入

我們將學(xué)習(xí)如何使用 openpyxl 和 pandas 庫來讀取和寫入Excel文件朝捆。我們將從簡單的操作開始般渡,首先讀取Excel文件的數(shù)據(jù),然后將數(shù)據(jù)寫入到一個新的 Excel 文件中。

openpyxl庫讀取和寫入Excel文件

  1. 讀取Excel文件數(shù)據(jù)
    首先驯用,我們需要導(dǎo)入openpyxl庫脸秽,然后使用load_workbook()函數(shù)來加載Excel文件。接下來蝴乔,使用active屬性選擇第一個工作表记餐,可以使用title屬性獲取工作表的名稱。通過循環(huán)遍歷工作表中的每一行和每一列薇正,我們可以獲取單元格中的數(shù)據(jù)片酝。這里是一個簡單的示例代碼:
import openpyxl

# 加載Excel文件
workbook = openpyxl.load_workbook('example.xlsx')

# 選擇第一個工作表
sheet = workbook.active

# 遍歷行和列,并打印每個單元格的數(shù)據(jù)
for row in sheet.iter_rows():
    for cell in row:
        print(cell.value)

上述代碼中的example.xlsx是你要讀取的Excel文件的文件名挖腰。通過上述代碼雕沿,我們將能夠讀取Excel文件中的所有數(shù)據(jù),并按行和列打印出來猴仑。

  1. 寫入數(shù)據(jù)到新Excel文件
    接下來审轮,我們將學(xué)習(xí)如何使用openpyxl和pandas將數(shù)據(jù)寫入到一個新的Excel文件中。首先辽俗,我們需要創(chuàng)建一個新的工作簿疾渣,并選擇一個工作表。然后崖飘,通過遍歷數(shù)據(jù)列表榴捡,我們可以將數(shù)據(jù)寫入到工作表的單元格中。最后朱浴,我們使用save()方法將工作簿保存為一個新的Excel文件薄疚。以下是一個簡單的示例代碼:
import openpyxl

# 創(chuàng)建一個新的工作簿
workbook = openpyxl.Workbook()

# 選擇一個工作表
sheet = workbook.active

# 示例數(shù)據(jù)列表
data = [
    ['姓名', '年齡', '性別'],
    ['張三', 25, '男'],
    ['李四', 30, '女'],
    ['王五', 35, '男']
]

# 遍歷數(shù)據(jù)列表,并將數(shù)據(jù)寫入到工作表的單元格中
for row_data in data:
    sheet.append(row_data)

# 保存工作簿為新的Excel文件
workbook.save('output.xlsx')

上述代碼中的data是示例數(shù)據(jù)列表赊琳,你可以根據(jù)自己的需求修改數(shù)據(jù)內(nèi)容。通過上述代碼砰碴,我們將能夠?qū)?shù)據(jù)寫入到工作表的單元格中躏筏,并將工作簿保存為一個名為output.xlsx的新Excel文件。

現(xiàn)在呈枉,你已經(jīng)學(xué)會了如何使用openpyxl庫讀取和寫入Excel文件的數(shù)據(jù)趁尼。繼續(xù)加油,掌握更多用于Excel處理的技巧猖辫!

pandas庫來讀取和寫入Excel文件

當(dāng)涉及到從讀取到寫入Excel文件時酥泞,pandas庫是一個非常強(qiáng)大和方便的工具。它提供了簡單易用的API來讀取和寫入Excel文件啃憎。

以下是使用pandas庫來讀取和寫入Excel文件的代碼示例:

首先芝囤,我們需要確保已使用pip安裝了pandas庫:

pip install pandas

讀取Excel文件:

import pandas as pd

# 讀取Excel文件
df = pd.read_excel('input.xlsx')

# 打印數(shù)據(jù)框的內(nèi)容
print(df)

代碼理解:以上代碼使用pd.read_excel()函數(shù)來讀取名為input.xlsx的Excel文件,并將其轉(zhuǎn)換為pandas的數(shù)據(jù)框(DataFrame)對象。然后悯姊,我們通過打印數(shù)據(jù)框的內(nèi)容來驗(yàn)證讀取的結(jié)果羡藐。

寫入Excel文件:

import pandas as pd

# 創(chuàng)建示例數(shù)據(jù)
data = {'姓名': ['小明', '小紅', '小李'],
        '年齡': [25, 30, 35],
        '城市': ['北京', '上海', '廣州']}

# 創(chuàng)建數(shù)據(jù)框
df = pd.DataFrame(data)

# 將數(shù)據(jù)框?qū)懭隕xcel文件
df.to_excel('output.xlsx', index=False)

代碼理解:以上代碼創(chuàng)建了一個示例的數(shù)據(jù)字典,并使用pd.DataFrame()函數(shù)將其轉(zhuǎn)換為數(shù)據(jù)框(DataFrame)對象悯许。然后仆嗦,我們使用df.to_excel()方法將數(shù)據(jù)框?qū)懭朊麨?code>output.xlsx的 Excel 文件中。通過設(shè)置index=False先壕,我們禁用了寫入Excel文件時的行索引瘩扼。

pandas庫讀取和寫入CSV文件

當(dāng)涉及到使用pandas庫讀取和寫入CSV文件時,它同樣提供了簡單易用的API垃僚。下面是使用pandas庫讀取和寫入CSV文件的代碼示例:

讀取CSV文件:

import pandas as pd

# 讀取CSV文件
df = pd.read_csv('input.csv')

# 打印數(shù)據(jù)框的內(nèi)容
print(df)

代碼理解:上述代碼使用pd.read_csv()函數(shù)來讀取名為input.csv的CSV文件集绰,并將其轉(zhuǎn)換為pandas的數(shù)據(jù)框(DataFrame)對象。然后冈在,我們通過打印數(shù)據(jù)框的內(nèi)容來驗(yàn)證讀取的結(jié)果倒慧。

寫入CSV文件:

import pandas as pd

# 創(chuàng)建示例數(shù)據(jù)
data = {'姓名': ['小明', '小紅', '小李'],
        '年齡': [25, 30, 35],
        '城市': ['北京', '上海', '廣州']}

# 創(chuàng)建數(shù)據(jù)框
df = pd.DataFrame(data)

# 將數(shù)據(jù)框?qū)懭隒SV文件
df.to_csv('output.csv', index=False)

代碼理解:上述代碼創(chuàng)建了一個示例的數(shù)據(jù)字典,并使用pd.DataFrame()函數(shù)將其轉(zhuǎn)換為數(shù)據(jù)框(DataFrame)對象。然后,我們使用df.to_csv()方法將數(shù)據(jù)框?qū)懭朊麨?code>output.csv的CSV文件中畜侦。通過設(shè)置index=False阳惹,我們禁用了寫入CSV文件時的行索引。

**openpyxl**高級技巧

openpyxl 庫提供了許多用于處理 Excel 文件的方法辙喂,包括讀取、寫入、修改和操作 Excel 文件的各個方面询吴。以下是 openpyxl 庫的一些常用方法:

  1. 打開和保存Excel文件:
  • load_workbook(filename): 打開指定文件名的Excel文件,并返回一個工作簿對象亮元。
  • save(filename): 將工作簿保存為指定文件名的Excel文件猛计。
  1. 獲取和選擇工作表:
  • active: 獲取當(dāng)前活動的工作表對象。
  • sheetnames: 獲取所有工作表的名稱列表爆捞。
  • get_sheet_by_name(name): 根據(jù)工作表名稱獲取對應(yīng)的工作表對象奉瘤。
  1. 操作單元格和單元格范圍:
  • cell(row, column): 返回指定行和列的單元格對象。
  • iter_rows(): 遍歷工作表中的所有行煮甥,并返回每一行的單元格對象盗温。
  • iter_cols(): 遍歷工作表中的所有列,并返回每一列的單元格對象成肘。
  • max_row: 獲取工作表中的最大行數(shù)卖局。
  • max_column: 獲取工作表中的最大列數(shù)。
  1. 讀取和寫入單元格數(shù)據(jù):
  • value: 獲取或設(shè)置單元格的值双霍。
  • cell(row, column, value): 設(shè)置指定行和列的單元格的值砚偶。
  • cell(row, column).value: 獲取指定行和列的單元格的值批销。
  1. 設(shè)置單元格格式和樣式:
  • font: 設(shè)置單元格的字體樣式,如字體大小蟹演、顏色风钻、加粗等。
  • alignment: 設(shè)置單元格的對齊方式酒请,如居中骡技、左對齊、右對齊等羞反。
  • border: 設(shè)置單元格的邊框樣式布朦。
  • fill: 設(shè)置單元格的背景顏色或填充樣式。
  1. 添加和刪除工作表:
  • create_sheet(title): 創(chuàng)建一個新的工作表昼窗,并設(shè)置工作表的名稱是趴。
  • remove_sheet(sheet): 刪除指定的工作表。
  1. 復(fù)制和移動單元格和工作表:
  • copy_worksheet(source): 復(fù)制指定的工作表澄惊,并返回一個新的工作表對象唆途。
  • move_range(source, destination): 移動指定范圍的單元格到目標(biāo)位置。

這些只是openpyxl庫中的一些常用方法掸驱,還有更多方法可用于處理Excel文件的各種任務(wù)肛搬。你可以參考openpyxl官方文檔以獲取完整的方法列表和詳細(xì)的用法說明。

以下是對 openpyxl 庫常用方法的代碼示例及其理解:

打開和保存Excel文件

import openpyxl

# 打開Excel文件
workbook = openpyxl.load_workbook("example.xlsx")

# 保存Excel文件
workbook.save("output.xlsx")

代碼理解:
上述代碼使用 openpyxl 庫的load_workbook()方法打開名為"example.xlsx"的Excel文件毕贼,并將其保存為工作簿對象温赔。

使用save()方法可以將工作簿保存為名為"output.xlsx"的新Excel文件。

獲取和選擇工作表

import openpyxl

# 加載Excel文件
workbook = openpyxl.load_workbook('example.xlsx')

# 獲取當(dāng)前活動的工作表對象
sheet = workbook.active

# 獲取所有工作表的名稱列表
sheet_names = workbook.sheetnames
print(sheet_names)

# 根據(jù)工作表名稱獲取對應(yīng)的工作表對象
sheet = workbook["Sheet1"]
print(sheet)

代碼理解:
以上代碼演示了幾種獲取和選擇工作表的方法鬼癣。屬性active返回當(dāng)前活動的工作表對象陶贼。

屬性sheetnames返回所有工作表的名稱列表。

還可以使用workbook["Sheet1"]來選擇名稱為"Sheet1"的工作表待秃,其中workbook是工作簿對象拜秧。

操作單元格和單元格范圍

  1. cell(row, column): 返回指定行和列的單元格對象。
import openpyxl

# 打開Excel文件
workbook = openpyxl.load_workbook("example.xlsx")

# 選擇工作表
sheet = workbook.active

# 返回第2行第3列的單元格對象
cell = sheet.cell(row=2, column=3)

# 輸出單元格的值
print(cell.value)

代碼理解:上述代碼演示了如何使用cell()方法來返回指定行和列的單元格對象章郁。通過傳入行號和列號腹纳,可以選擇特定的單元格。在這個示例中驱犹,我們選擇了工作表中的第2行第3列的單元格,并打印出其值足画。

  1. iter_rows(): 遍歷工作表中的所有行雄驹,并返回每一行的單元格對象。
import openpyxl

# 打開Excel文件
workbook = openpyxl.load_workbook("example.xlsx")

# 選擇工作表
sheet = workbook.active

# 遍歷每一行的單元格對象
for row in sheet.iter_rows():
    for cell in row:
        # 輸出單元格的值
        print(cell.value)

代碼理解:以上代碼展示了如何使用iter_rows()方法來遍歷工作表中的每一行淹辞,并返回每一行的單元格對象医舆。通過嵌套的循環(huán),我們可以遍歷每一行中的單元格,并打印出每個單元格的值蔬将。

  1. iter_cols(): 遍歷工作表中的所有列爷速,并返回每一列的單元格對象。
import openpyxl

# 打開Excel文件
workbook = openpyxl.load_workbook("example.xlsx")

# 選擇工作表
sheet = workbook.active

# 遍歷每一列的單元格對象
for column in sheet.iter_cols():
    for cell in column:
        # 輸出單元格的值
        print(cell.value)

代碼理解:以上代碼展示了如何使用iter_cols()方法來遍歷工作表中的每一列霞怀,并返回每一列的單元格對象惫东。通過嵌套的循環(huán),我們可以遍歷每一列中的單元格毙石,并打印出每個單元格的值廉沮。

  1. max_row: 獲取工作表中的最大行數(shù)。
import openpyxl

# 打開Excel文件
workbook = openpyxl.load_workbook("example.xlsx")

# 選擇工作表
sheet = workbook.active

# 獲取工作表中的最大行數(shù)
max_row = sheet.max_row

# 輸出最大行數(shù)
print(max_row)

代碼理解:以上代碼演示了如何使用max_row屬性來獲取工作表中的最大行數(shù)徐矩。通過訪問該屬性滞时,我們可以得到工作表的行數(shù),并將其存儲在變量max_row中滤灯。然后坪稽,我們將該值打印出來。

  1. max_column: 獲取工作表中的最大列數(shù)鳞骤。
import openpyxl

# 打開Excel文件
workbook = openpyxl.load_workbook("example.xlsx")

# 選擇工作表
sheet = workbook.active

# 獲取工作表中的最大列數(shù)
max_column = sheet.max_column

# 輸出最大列數(shù)
print(max_column)

代碼理解:以上代碼演示了如何使用max_column屬性來獲取工作表中的最大列數(shù)窒百。通過訪問該屬性,我們可以得到工作表的列數(shù)弟孟,并將其存儲在變量max_column中贝咙。然后,我們將該值打印出來拂募。

這些是針對操作單元格和單元格范圍的每個方法的代碼示例庭猩。希望這些示例能夠幫助您理解這些方法的用法和功能。如果您還有其他問題陈症,請隨時提問蔼水!

讀取和寫入單元格數(shù)據(jù)

以下是針對讀取和寫入單元格數(shù)據(jù)的每個方法的代碼示例:

  1. value: 獲取或設(shè)置單元格的值。
import openpyxl

# 打開Excel文件
workbook = openpyxl.load_workbook("example.xlsx")

# 選擇工作表
sheet = workbook.active

# 獲取A1單元格的值
value = sheet["A1"].value

# 輸出單元格的值
print(value)

# 設(shè)置A1單元格的值
sheet["A1"].value = "Hello, World!"

# 保存修改后的Excel文件
workbook.save("output.xlsx")

代碼理解:上述代碼演示了如何使用value屬性來獲取或設(shè)置單元格的值录肯。通過訪問單元格對象的value屬性趴腋,可以獲取單元格的值并將其存儲在變量value中。
在示例中论咏,我們獲取了"A1"單元格的值优炬,并將其打印出來。然后厅贪,我們使用sheet["A1"].value來設(shè)置"A1"單元格的值為"Hello, World!"蠢护。最后,將修改后的工作簿保存為"output.xlsx"养涮。

  1. cell(row, column, value): 設(shè)置指定行和列的單元格的值葵硕。
import openpyxl

# 打開Excel文件
workbook = openpyxl.load_workbook("example.xlsx")

# 選擇工作表
sheet = workbook.active

# 設(shè)置B2單元格的值為"哈哈哈"
sheet.cell(row=2, column=2, value="哈哈哈")

# 保存修改后的Excel文件
workbook.save("output.xlsx")

代碼理解:以上代碼演示了如何使用cell()方法來設(shè)置指定行和列的單元格的值眉抬。通過傳入行號、列號和值懈凹,可以選擇特定的單元格蜀变,并將其值設(shè)置為指定的值。
在示例中介评,我們設(shè)置了"B2"單元格的值為"哈哈哈"库北。最后,將修改后的工作簿保存為"output.xlsx"威沫。

  1. cell(row, column).value: 獲取指定行和列的單元格的值贤惯。
import openpyxl

# 打開Excel文件
workbook = openpyxl.load_workbook("example.xlsx")

# 選擇工作表
sheet = workbook.active

# 獲取C3單元格的值
value = sheet.cell(row=3, column=3).value

# 輸出單元格的值
print(value)

代碼理解:上述代碼演示了如何使用cell(row, column).value來獲取指定行和列的單元格的值。通過cell()方法獲取指定行和列的單元格對象棒掠,并使用.value來獲取其值孵构。
在示例中,我們獲取了"C3"單元格的值烟很,并將其打印出來颈墅。

設(shè)置單元格格式和樣式

以下是針對設(shè)置單元格格式和樣式的每個方法的代碼示例:

  1. font: 設(shè)置單元格的字體樣式,如字體大小雾袱、顏色恤筛、加粗等。
import openpyxl
from openpyxl.styles import Font

# 創(chuàng)建工作簿和工作表
workbook = openpyxl.load_workbook("example.xlsx")
sheet = workbook.active

# 設(shè)置A1單元格的字體樣式
font = Font(size=12, color="FF0000", bold=True)
sheet["A1"].font = font

# 保存工作簿
workbook.save("output.xlsx")

代碼理解:上述代碼演示了如何使用Font類來設(shè)置單元格的字體樣式芹橡。通過創(chuàng)建一個Font對象毒坛,并設(shè)置相應(yīng)的屬性,然后將其賦值給單元格的font屬性林说,可以實(shí)現(xiàn)對單元格字體的樣式設(shè)置煎殷。
在這個示例中,我們設(shè)置了"A1"單元格的字體大小為12腿箩,顏色為紅色豪直,且加粗。

  1. alignment: 設(shè)置單元格的對齊方式珠移,如居中弓乙、左對齊、右對齊等钧惧。
import openpyxl
from openpyxl.styles import Alignment

# 創(chuàng)建工作簿和工作表
workbook = openpyxl.load_workbook("example.xlsx")
sheet = workbook.active

# 設(shè)置B2單元格的對齊方式為水平居中暇韧、垂直居中
alignment = Alignment(horizontal="center", vertical="center")
sheet["B2"].alignment = alignment

# 保存工作簿
workbook.save("output.xlsx")

代碼理解:以上代碼演示了如何使用Alignment類來設(shè)置單元格的對齊方式。通過創(chuàng)建一個Alignment對象浓瞪,并設(shè)置水平和垂直對齊方式的屬性锨咙,然后將其賦值給單元格的alignment屬性,可以實(shí)現(xiàn)對單元格對齊方式的設(shè)置追逮。
在這個示例中酪刀,我們設(shè)置了"B2"單元格的對齊方式為水平居中和垂直居中。

  1. border: 設(shè)置單元格的邊框樣式钮孵。
from openpyxl import Workbook
from openpyxl.styles import Border, Side

# 創(chuàng)建工作簿和工作表
workbook = Workbook()
sheet = workbook.active

# 創(chuàng)建邊框?qū)ο?border = Border(top=Side(style="thin"), 
                bottom=Side(style="thin"), 
                left=Side(style="thin"), 
                right=Side(style="thin"))

# 設(shè)置C3單元格的邊框樣式
sheet["C3"].border = border

# 保存工作簿
workbook.save("output.xlsx")

代碼理解:以上代碼演示了如何使用Border類來設(shè)置單元格的邊框樣式骂倘。通過創(chuàng)建一個Border對象,并設(shè)置各個邊框樣式的Side對象巴席,然后將Border對象賦值給單元格的border屬性历涝,可以實(shí)現(xiàn)對單元格邊框樣式的設(shè)置。
在這個示例中漾唉,我們設(shè)置了"C3"單元格的邊框樣式為細(xì)邊框荧库。

  1. fill: 設(shè)置單元格的背景顏色或填充樣式。
import openpyxl
from openpyxl.styles import PatternFill

# 創(chuàng)建工作簿和工作表
workbook = openpyxl.load_workbook("example.xlsx")
sheet = workbook.active

# 創(chuàng)建填充樣式對象
fill = PatternFill(fill_type="solid", fgColor="FF0000")

# 設(shè)置D4單元格的填充樣式為紅色
sheet["D4"].fill = fill

# 保存工作簿
workbook.save("output.xlsx")

代碼理解:以上代碼演示了如何使用PatternFill類來設(shè)置單元格的背景顏色或填充樣式赵刑。通過創(chuàng)建一個PatternFill對象分衫,并設(shè)置填充類型和前景色的屬性,然后將其賦值給單元格的fill屬性般此,可以實(shí)現(xiàn)對單元格背景顏色或填充樣式的設(shè)置蚪战。
在這個示例中,我們設(shè)置了"D4"單元格的填充樣式為紅色铐懊。

添加和刪除工作表

以下是添加和刪除工作表的代碼示例:

  1. create_sheet(title): 創(chuàng)建一個新的工作表邀桑,并設(shè)置工作表的名稱。
import openpyxl

# 創(chuàng)建工作簿
workbook = openpyxl.load_workbook("example.xlsx")

# 創(chuàng)建一個名為"My Sheet"的新工作表
new_sheet = workbook.create_sheet(title="My Sheet")

# 保存工作簿
workbook.save("output.xlsx")

代碼理解:上述代碼演示了如何使用create_sheet()方法來創(chuàng)建一個新的工作表科乎,并設(shè)置工作表的名稱壁畸。通過在title參數(shù)中提供工作表的名稱,可以創(chuàng)建一個新的工作表對象茅茂。
在這個示例中捏萍,我們創(chuàng)建了一個名為"My Sheet"的新工作表,并將其保存到工作簿中玉吁。

  1. remove_sheet(sheet): 刪除指定的工作表照弥。
from openpyxl import load_workbook

# 打開工作簿
workbook = load_workbook("example.xlsx")

# 獲取需要刪除的工作表對象
sheet_to_remove = workbook["Sheet2"]

# 刪除工作表
workbook.remove(sheet_to_remove)

# 保存工作簿
workbook.save("output.xlsx")

代碼理解:以上代碼演示了如何使用remove_sheet()方法刪除指定的工作表。通過提供要刪除的工作表對象作為參數(shù)进副,可以從工作簿中刪除該工作表这揣。
在這個示例中,我們獲取了名為"Sheet2"的工作表對象影斑,并使用remove_sheet()方法將其從工作簿中刪除给赞。

復(fù)制和移動單元格和工作表

  1. copy_worksheet(source): 復(fù)制指定的工作表,并返回一個新的工作表對象矫户。
from openpyxl import load_workbook

# 打開工作簿
workbook = load_workbook("example.xlsx")

# 獲取要復(fù)制的工作表對象
source_sheet = workbook["Sheet1"]

# 復(fù)制工作表
new_sheet = workbook.copy_worksheet(source_sheet)

# 保存工作簿
workbook.save("output.xlsx")

代碼理解:以上代碼演示了如何使用copy_worksheet()方法來復(fù)制指定的工作表片迅。通過將要復(fù)制的工作表對象作為參數(shù)傳遞給copy_worksheet()方法,可以創(chuàng)建一個新的工作表對象作為復(fù)制結(jié)果皆辽。
在這個示例中柑蛇,我們復(fù)制了名為"Sheet1"的工作表芥挣,并將復(fù)制結(jié)果保存為新的工作表。

  1. move_range(source, destination): 移動指定范圍的單元格到目標(biāo)位置耻台。
from openpyxl import load_workbook
from openpyxl.utils.cell import coordinate_from_string, column_index_from_string

# 打開工作簿
workbook = load_workbook("example.xlsx")

# 選擇要移動的工作表
sheet = workbook["Sheet1"]

# 獲取源范圍的起始行和列
source_range = "A1:C3"
start_cell, end_cell = source_range.split(":")
start_row, start_column = coordinate_from_string(start_cell)
end_row, end_column = coordinate_from_string(end_cell)

# 獲取目標(biāo)位置的行和列
destination_row = 5
destination_column = column_index_from_string("D")

# 移動指定范圍的單元格到目標(biāo)位置
sheet.move_range(f"{start_column}{start_row}:{end_column}{end_row}", rows=destination_row-1, cols=destination_column-1)

# 保存工作簿
workbook.save("output.xlsx")

代碼理解:以上代碼演示了如何使用move_range()方法將指定范圍的單元格移動到目標(biāo)位置空免。通過提供源范圍的起始單元格和終止單元格,以及目標(biāo)位置的行和列盆耽,可以使用move_range()方法將目標(biāo)范圍的單元格移動到指定位置蹋砚。
在這個示例中,我們將"A1:C3"范圍的單元格移動到目標(biāo)位置為第5行摄杂、第4列的位置坝咐。

這些是openpyxl庫中常用的方法以及簡單易懂的代碼示例。希望這些示例能幫助您理解openpyxl庫的用法析恢。如果您有任何進(jìn)一步的問題墨坚,請隨時提問!

pandas高級技巧

以下是上述提到的pandas庫提供的一些常用方法以及它們的作用的匯總:

  • 數(shù)據(jù)索引和選擇:
    • loc[]:通過標(biāo)簽對數(shù)據(jù)進(jìn)行索引和選擇氮昧。
    • iloc[]:通過位置對數(shù)據(jù)進(jìn)行索引和選擇框杜。
    • at[]:通過標(biāo)簽獲取單個元素的值。
    • iat[]:通過位置獲取單個元素的值袖肥。
    • isin():檢查元素是否存在于給定的列表中咪辱。
  • 數(shù)據(jù)處理和轉(zhuǎn)換:
    • drop():刪除指定的行或列。
    • rename():重命名行或列的名稱椎组。
    • sort_values():按照指定的列對數(shù)據(jù)進(jìn)行排序油狂。
    • groupby():按照指定的列進(jìn)行分組。
    • merge():合并兩個數(shù)據(jù)框基于指定的列寸癌。
    • apply():對數(shù)據(jù)框中的每個元素或列應(yīng)用函數(shù)专筷。
  • 數(shù)據(jù)統(tǒng)計(jì)和描述:
    • describe():計(jì)算數(shù)據(jù)的描述性統(tǒng)計(jì)信息。
    • mean():計(jì)算數(shù)據(jù)的均值蒸苇。
    • sum():計(jì)算數(shù)據(jù)的總和磷蛹。
    • min():計(jì)算數(shù)據(jù)的最小值。
    • max():計(jì)算數(shù)據(jù)的最大值溪烤。
  • 數(shù)據(jù)可視化:
    • plot():繪制數(shù)據(jù)的圖表味咳。
    • hist():繪制數(shù)據(jù)的直方圖。
    • scatter():繪制數(shù)據(jù)的散點(diǎn)圖檬嘀。
  • 數(shù)據(jù)排序和排名:
    • sort_values():按照指定的列或多列對數(shù)據(jù)進(jìn)行排序槽驶。
    • sort_index():按照索引對數(shù)據(jù)進(jìn)行排序。
    • rank():根據(jù)元素的值對數(shù)據(jù)進(jìn)行排名鸳兽。
  • 缺失值處理:
    • isnull():檢查數(shù)據(jù)中的缺失值掂铐。
    • fillna():填充缺失值。
    • dropna():刪除包含缺失值的行或列。
  • 數(shù)據(jù)去重:
    • duplicated():檢查數(shù)據(jù)中的重復(fù)行全陨。
    • drop_duplicates():刪除數(shù)據(jù)中的重復(fù)行爆班。
  • 數(shù)據(jù)轉(zhuǎn)換:
    • apply():對數(shù)據(jù)框中的每個元素或列應(yīng)用函數(shù)。
    • map():根據(jù)指定的字典或函數(shù)對數(shù)據(jù)進(jìn)行映射轉(zhuǎn)換辱姨。
  • 數(shù)據(jù)分組和聚合:
    • groupby():按照指定的列進(jìn)行分組蛋济。
    • sum():計(jì)算分組后數(shù)據(jù)的總和。
    • mean():計(jì)算分組后數(shù)據(jù)的平均值炮叶。
    • count():計(jì)算分組后數(shù)據(jù)的計(jì)數(shù)。
  • 數(shù)據(jù)合并和連接:
    • concat():按照指定的軸將多個數(shù)據(jù)框連接起來渡处。
    • merge():根據(jù)指定的列將兩個數(shù)據(jù)框進(jìn)行合并镜悉。
    • join():根據(jù)索引或指定的列將兩個數(shù)據(jù)框進(jìn)行連接。
  • 數(shù)據(jù)篩選和過濾:
    • []:使用布爾條件對數(shù)據(jù)進(jìn)行篩選医瘫。
    • query():使用表達(dá)式進(jìn)行數(shù)據(jù)篩選侣肄。
    • loc[]:根據(jù)標(biāo)簽進(jìn)行行和列的篩選。
    • iloc[]:根據(jù)位置進(jìn)行行和列的篩選醇份。
    • &:與運(yùn)算符稼锅,用于組合多個條件進(jìn)行邏輯與操作。
    • |:或運(yùn)算符僚纷,用于組合多個條件進(jìn)行邏輯或操作矩距。
    • isin():檢查數(shù)據(jù)是否包含在指定列表中。
    • str.contains():檢查字符串是否包含指定的子字符串怖竭。

以上是針對pandas庫提供的一些常用方法以及它們的作用的匯總锥债。使用這些方法,您可以方便地對數(shù)據(jù)進(jìn)行索引痊臭、選擇哮肚、處理、轉(zhuǎn)換广匙、統(tǒng)計(jì)允趟、可視化和篩選等操作。下面一一詳細(xì)講解鸦致。

數(shù)據(jù)索引和選擇

假設(shè)我們有一個學(xué)生信息的數(shù)據(jù)框潮剪,其中包含了學(xué)生的姓名、年齡和所在城市蹋凝。我們可以使用上述方法對數(shù)據(jù)進(jìn)行索引和選擇鲁纠。

import pandas as pd

# 創(chuàng)建一個學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 17],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# 通過標(biāo)簽對數(shù)據(jù)進(jìn)行索引和選擇
print(df.loc[1])  # 選擇第2個學(xué)生的信息
print(df.loc[:, '年齡':'城市'])  # 選擇年齡和城市列的信息
print(df.loc[0, '姓名'])  # 選擇第1個學(xué)生的姓名

# 通過位置對數(shù)據(jù)進(jìn)行索引和選擇
print(df.iloc[2])  # 選擇第3個學(xué)生的信息
print(df.iloc[:, 0:2])  # 選擇姓名和年齡列的信息
print(df.iloc[1, 2])  # 選擇第2個學(xué)生的城市

# 通過標(biāo)簽獲取單個元素的值
print(df.at[0, '城市'])  # 獲取第1個學(xué)生的城市

# 通過位置獲取單個元素的值
print(df.iat[2, 1])  # 獲取第3個學(xué)生的年齡

# 檢查元素是否存在于給定的列表中
print(df['城市'].isin(['上海', '深圳']))  # 檢查城市是否在給定的列表中

在這個實(shí)際應(yīng)用場景中,我們可以根據(jù)學(xué)生的姓名鳍寂、年齡和所在城市使用不同的索引和選擇方法來獲取需要的信息改含。通過這些方法,我們可以輕松地處理和獲取數(shù)據(jù)迄汛,以了解學(xué)生的信息捍壤。這段代碼主要是通過 Pandas 庫來創(chuàng)建一個學(xué)生信息的數(shù)據(jù)框骤视,并展示了使用不同的索引和選擇方法來獲取特定的數(shù)據(jù)。

代碼理解:
首先鹃觉,我們導(dǎo)入了 Pandas 庫专酗,并創(chuàng)建了一個包含學(xué)生姓名、年齡和城市的示例數(shù)據(jù)字典 data盗扇。然后祷肯,將數(shù)據(jù)字典傳遞給 pd.DataFrame() 函數(shù)創(chuàng)建了一個數(shù)據(jù)框,存儲在變量 df 中疗隶。

接下來佑笋,我們使用以下方法對數(shù)據(jù)進(jìn)行索引和選擇:

  • 使用 loc[] 方法:
    • df.loc[1] 表示選擇第2個學(xué)生的信息,即獲取整行數(shù)據(jù)斑鼻。
    • df.loc[:, '年齡':'城市'] 表示選擇年齡和城市列的信息蒋纬,即獲取指定范圍的列數(shù)據(jù)。
    • df.loc[0, '姓名'] 表示選擇第1個學(xué)生的姓名坚弱,即獲取指定位置的元素值蜀备。
  • 使用 iloc[] 方法:
    • df.iloc[2] 表示選擇第3個學(xué)生的信息,即獲取整行數(shù)據(jù)荒叶。
    • df.iloc[:, 0:2] 表示選擇姓名和年齡列的信息碾阁,即獲取指定范圍的列數(shù)據(jù)。
    • df.iloc[1, 2] 表示選擇第2個學(xué)生的城市停撞,即獲取指定位置的元素值瓷蛙。
  • 使用 at[] 方法:
    • df.at[0, '城市'] 表示獲取第1個學(xué)生的城市,即獲取指定標(biāo)簽位置的元素值戈毒。
  • 使用 iat[] 方法:
    • df.iat[2, 1] 表示獲取第3個學(xué)生的年齡艰猬,即獲取指定位置的元素值。
  • 使用 isin() 方法:
    • df['城市'].isin(['上海', '深圳']) 表示檢查城市是否在給定的列表中埋市,返回一個布爾值序列冠桃。

數(shù)據(jù)處理和轉(zhuǎn)換

import pandas as pd

# 創(chuàng)建一個學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 17],
        '學(xué)號': [1, 2, 3, 4],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# drop() 方法:刪除指定的行或列
df_drop_rows = df.drop([0, 2])  # 刪除索引為0和2的行
# 輸出結(jié)果
print("刪除指定行的數(shù)據(jù)框:\n", df_drop_rows)

df_drop_columns = df.drop('城市', axis=1)  # 刪除 '城市' 列
print("刪除指定列的數(shù)據(jù)框:\n", df_drop_columns)


# rename() 方法:重命名行或列的名稱
df_rename_columns = df.rename(columns={'年齡': '年齡段'})  # 將 '年齡' 列重命名為 '年齡段'
print("重命名列名稱的數(shù)據(jù)框:\n", df_rename_columns)


# sort_values() 方法:按照指定的列對數(shù)據(jù)進(jìn)行排序
df_sorted = df.sort_values(by='年齡', ascending=False)  # 按照 '年齡' 列降序排序
print("按照年齡降序排序的數(shù)據(jù)框:\n", df_sorted)


# groupby() 方法:按照指定的列進(jìn)行分組并計(jì)算均值
df_grouped = df.groupby('城市').agg({'年齡': 'mean'})  # 按照 '城市' 列進(jìn)行分組并計(jì)算每個城市的平均年齡
print("按照城市分組計(jì)算平均年齡的數(shù)據(jù)框:\n", df_grouped)


# merge() 方法:合并兩個數(shù)據(jù)框基于指定的列
df1 = pd.DataFrame({'學(xué)號': [1, 2, 3, 4], '成績': [85, 90, 95, 88]})
df_merged = df.merge(df1, on='學(xué)號')  # 基于 '學(xué)號' 列合并兩個數(shù)據(jù)框
print("基于學(xué)號合并的數(shù)據(jù)框:\n", df_merged)


# apply() 方法:對數(shù)據(jù)框中的每個元素或列應(yīng)用函數(shù)
numeric_columns = ['年齡']
df_applied = df[numeric_columns].apply(lambda x: x.max() - x.min())  # 對數(shù)值列應(yīng)用函數(shù),計(jì)算每列的最大值和最小值的差
print("每列最大值和最小值差的數(shù)據(jù)框:\n", df_applied)

這段代碼使用了 Pandas 庫來展示了一些常用的數(shù)據(jù)操作方法道宅。

首先食听,使用字典創(chuàng)建了一個學(xué)生信息的示例數(shù)據(jù)框 df,其中包含了姓名污茵、年齡樱报、學(xué)號和城市等列的數(shù)據(jù)。

接下來泞当,使用 drop() 方法刪除了索引為0和2的行迹蛤,以及使用 drop() 方法刪除了 '城市' 列,分別得到了 df_drop_rowsdf_drop_columns 數(shù)據(jù)框。

然后盗飒,使用 rename() 方法將 '年齡' 列重命名為 '年齡段'嚷量,得到了 df_rename_columns 數(shù)據(jù)框。

接著逆趣,使用 sort_values() 方法按照 '年齡' 列的降序?qū)?shù)據(jù)框進(jìn)行排序蝶溶,得到了 df_sorted 數(shù)據(jù)框。

之后宣渗,使用 groupby() 方法按照 '城市' 列進(jìn)行分組抖所,并計(jì)算每個城市的平均年齡,得到了 df_grouped 數(shù)據(jù)框痕囱。

然后部蛇,使用 merge() 方法基于 '學(xué)號' 列合并了 dfdf1 兩個數(shù)據(jù)框,得到了 df_merged 數(shù)據(jù)框咐蝇。

最后,使用 apply() 方法對 df 數(shù)據(jù)框中的 '年齡' 列應(yīng)用函數(shù)巷查,計(jì)算了每列的最大值和最小值的差值有序,得到了 df_applied 數(shù)據(jù)框。

數(shù)據(jù)統(tǒng)計(jì)和描述

當(dāng)根據(jù)學(xué)生的姓名岛请、年齡和所在城市的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)和描述時旭寿,可以使用以下方法,以下是每個方法的代碼示例和簡要解釋:

describe()方法:計(jì)算數(shù)據(jù)的描述性統(tǒng)計(jì)信息崇败,包括計(jì)數(shù)盅称、平均值、標(biāo)準(zhǔn)差后室、最小值缩膝、25%分位數(shù)、中位數(shù)(50%分位數(shù))岸霹、75%分位數(shù)和最大值疾层。

import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 17],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# describe()方法:計(jì)算數(shù)據(jù)的描述性統(tǒng)計(jì)信息
df_describe = df.describe()
print("數(shù)據(jù)的描述性統(tǒng)計(jì)信息:\n", df_describe)

代碼理解:上述代碼創(chuàng)建了一個包含姓名、年齡和城市的學(xué)生信息數(shù)據(jù)框贡避。然后痛黎,使用describe()方法計(jì)算了整個數(shù)據(jù)框的描述性統(tǒng)計(jì)信息,包括計(jì)數(shù)刮吧、平均值湖饱、標(biāo)準(zhǔn)差、最小值杀捻、25%分位數(shù)井厌、中位數(shù)(50%分位數(shù))、75%分位數(shù)和最大值。最后旗笔,輸出了計(jì)算結(jié)果彪置。

mean()方法:計(jì)算數(shù)據(jù)的均值。

import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 17],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# mean()方法:計(jì)算年齡的均值
age_mean = df['年齡'].mean()
print("年齡的均值:", age_mean)

代碼理解:上述代碼創(chuàng)建了一個包含姓名蝇恶、年齡和城市的學(xué)生信息數(shù)據(jù)框拳魁。然后,使用mean()方法計(jì)算了年齡列的均值撮弧。最后潘懊,輸出了均值。

sum()方法:計(jì)算數(shù)據(jù)的總和贿衍。

import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 17],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# sum()方法:計(jì)算年齡的總和
age_sum = df['年齡'].sum()
print("年齡的總和:", age_sum)

代碼理解:上述代碼創(chuàng)建了一個包含姓名授舟、年齡和城市的學(xué)生信息數(shù)據(jù)框。然后贸辈,使用sum()方法計(jì)算了年齡列的總和释树。最后,輸出了總和。

min()方法:計(jì)算數(shù)據(jù)的最小值。

import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 17],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# min()方法:計(jì)算年齡的最小值
age_min = df['年齡'].min()
print("年齡的最小值:", age_min)

代碼理解:上述代碼創(chuàng)建了一個包含姓名髓抑、年齡和城市的學(xué)生信息數(shù)據(jù)框。然后桩盲,使用min()方法計(jì)算了年齡列的最小值。最后席吴,輸出了最小值赌结。

max()方法:計(jì)算數(shù)據(jù)的最大值。

import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 17],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# max()方法:計(jì)算年齡的最大值
age_max = df['年齡'].max()
print("年齡的最大值:", age_max)

代碼理解:上述代碼創(chuàng)建了一個包含姓名孝冒、年齡和城市的學(xué)生信息數(shù)據(jù)框柬姚。然后,使用max()方法計(jì)算了年齡列的最大值庄涡。最后伤靠,輸出了最大值。

數(shù)據(jù)可視化

當(dāng)根據(jù)學(xué)生的姓名啼染、年齡和所在城市的數(shù)據(jù)進(jìn)行時宴合,可以使用以下方法,以下是每個方法的代碼示例和簡要解釋:

記得要安裝 matplotlib 模塊喲:

pip install matplotlib

plot()方法:繪制數(shù)據(jù)的圖表迹鹅。

import pandas as pd
import matplotlib.pyplot as plt

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 17],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# plot()方法:繪制年齡的折線圖
df['年齡'].plot()
plt.xlabel('學(xué)生')
plt.ylabel('年齡')
plt.title('學(xué)生年齡分布')
plt.show()

代碼理解:上述代碼創(chuàng)建了一個包含姓名卦洽、年齡和城市的學(xué)生信息數(shù)據(jù)框。然后斜棚,使用plot()方法繪制了年齡的折線圖阀蒂,橫軸為學(xué)生该窗,縱軸為年齡。最后蚤霞,添加了橫軸酗失、縱軸和標(biāo)題的標(biāo)簽,并展示了繪制的圖表昧绣。

結(jié)果:


image.png

hist()方法:繪制數(shù)據(jù)的直方圖规肴。

import pandas as pd
import matplotlib.pyplot as plt

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 17],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# hist()方法:繪制年齡的直方圖
df['年齡'].hist(bins=20)
plt.xlabel('年齡')
plt.ylabel('學(xué)生人數(shù)')
plt.title('學(xué)生年齡分布')
plt.show()

代碼理解:上述代碼創(chuàng)建了一個包含姓名、年齡和城市的學(xué)生信息數(shù)據(jù)框夜畴。然后拖刃,使用hist()方法繪制了年齡的直方圖,將數(shù)據(jù)分成20個箱子贪绘。最后兑牡,添加了橫軸、縱軸和標(biāo)題的標(biāo)簽税灌,并展示了繪制的圖表均函。

結(jié)果:


image.png

scatter()方法:繪制數(shù)據(jù)的散點(diǎn)圖。

import pandas as pd
import matplotlib.pyplot as plt

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 17],
        '城市': ['北京', '上海', '廣州', '深圳'],
        '學(xué)號': [1, 2, 3, 4]}  # 添加學(xué)號列
df = pd.DataFrame(data)

# scatter()方法:繪制年齡和學(xué)號的散點(diǎn)圖
df.plot.scatter(x='學(xué)號', y='年齡')
plt.xlabel('學(xué)號')
plt.ylabel('年齡')
plt.title('學(xué)號與年齡關(guān)系')
plt.show()

代碼理解:上述代碼創(chuàng)建了一個包含姓名菱涤、年齡和城市的學(xué)生信息數(shù)據(jù)框边酒。然后,使用scatter()方法繪制了年齡和學(xué)號的散點(diǎn)圖狸窘。橫軸為學(xué)號,縱軸為年齡坯认。最后翻擒,添加了橫軸、縱軸和標(biāo)題的標(biāo)簽牛哺,并展示了繪制的圖表陋气。

結(jié)果:


image.png

數(shù)據(jù)排序和排名

當(dāng)根據(jù)學(xué)生的姓名、年齡和所在城市這些實(shí)際應(yīng)用場景時引润,可以使用以下方法進(jìn)行排序和排名:

  1. sort_values()方法示例:
import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 17],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# 按照姓名列進(jìn)行升序排序
df_sorted = df.sort_values(by='姓名')

print(df_sorted)

輸出:

   姓名  年齡  城市
0  張三  18  北京
3  趙六  17  深圳
1  李四  20  上海
2  王五  19  廣州

上述代碼中巩趁,使用sort_values()方法根據(jù)姓名列對學(xué)生信息進(jìn)行升序排序。排序后的結(jié)果按照姓名從小到大的順序排列淳附。

  1. sort_index()方法示例:
import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 17],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# 按照索引對數(shù)據(jù)框進(jìn)行排序
df_sorted = df.sort_index()

print(df_sorted)

輸出:

   姓名  年齡  城市
0  張三  18  北京
1  李四  20  上海
2  王五  19  廣州
3  趙六  17  深圳

上述代碼中议慰,使用sort_index()方法按照索引對學(xué)生信息的數(shù)據(jù)框進(jìn)行排序。排序后的結(jié)果按照索引的順序排列奴曙。

  1. rank()方法示例:
import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 17],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# 根據(jù)年齡列對學(xué)生進(jìn)行排名
df['排名'] = df['年齡'].rank()

print(df)

輸出:

   姓名  年齡  城市   排名
0  張三  18  北京  2.0
1  李四  20  上海  4.0
2  王五  19  廣州  3.0
3  趙六  17  深圳  1.0

上述代碼中别凹,使用rank()方法根據(jù)年齡列對學(xué)生進(jìn)行排名。通過添加一個名為"排名"的新列洽糟,顯示每個學(xué)生的排名情況炉菲。

缺失值處理

當(dāng)根據(jù)學(xué)生的姓名堕战、年齡和所在城市這些實(shí)際應(yīng)用場景時,可以使用以下方法處理缺失值:

  1. isnull()方法示例:
import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框拍霜,其中包含一個缺失值
data = {'姓名': ['張三', '李四', '王五', None],
        '年齡': [18, 20, None, 17],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# 檢查是否存在缺失值
is_null = df.isnull()

print(is_null)

輸出:

     姓名     年齡     城市
0  False  False  False
1  False  False  False
2  False   True  False
3   True  False  False

上述代碼中嘱丢,使用isnull()方法檢查學(xué)生信息數(shù)據(jù)框中的缺失值。輸出結(jié)果顯示了每個元素是否為缺失值祠饺,True表示缺失值越驻,False表示非缺失值。

  1. fillna()方法示例:
import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框吠裆,其中包含一個缺失值
data = {'姓名': ['張三', '李四', '王五', None],
        '年齡': [18, 20, None, 17],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# 填充缺失值
df_filled = df.fillna('未知')

print(df_filled)

輸出:

   姓名  年齡  城市
0  張三  18  北京
1  李四  20  上海
2  王五  未知  廣州
3  未知  17  深圳

上述代碼中伐谈,使用fillna()方法將學(xué)生信息數(shù)據(jù)框中的缺失值填充為"未知"。這樣可以將缺失值替換為指定的值试疙,便于數(shù)據(jù)的處理和分析诵棵。

  1. dropna()方法示例:
import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框,其中包含一個缺失值
data = {'姓名': ['張三', '李四', '王五', None],
        '年齡': [18, 20, None, 17],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# 刪除包含缺失值的行
df_dropped = df.dropna()

print(df_dropped)

輸出:

   姓名    年齡  城市
0  張三  18.0  北京
1  李四  20.0  上海

上述代碼中祝旷,使用dropna()方法刪除包含缺失值的行履澳。只保留了完整的學(xué)生信息,缺失值所在的行被從數(shù)據(jù)框中刪除怀跛。

數(shù)據(jù)去重

當(dāng)根據(jù)學(xué)生的姓名距贷、年齡和所在城市這些實(shí)際應(yīng)用場景時,可以使用以下方法處理數(shù)據(jù)重復(fù)值:

  1. duplicated()方法示例:
import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框吻谋,其中包含重復(fù)行
data = {'姓名': ['張三', '李四', '王五', '張三'],
        '年齡': [18, 20, 19, 18],
        '城市': ['北京', '上海', '廣州', '北京']}
df = pd.DataFrame(data)

# 檢查是否存在重復(fù)行
is_duplicated = df.duplicated()

print(is_duplicated)

輸出:

0    False
1    False
2    False
3     True
dtype: bool

上述代碼中忠蝗,使用duplicated()方法檢查學(xué)生信息數(shù)據(jù)框中的重復(fù)行。輸出結(jié)果為布爾值漓拾,表示每一行是否為重復(fù)行阁最,True表示重復(fù)行,False表示非重復(fù)行骇两。

  1. drop_duplicates()方法示例:
import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框速种,其中包含重復(fù)行
data = {'姓名': ['張三', '李四', '王五', '張三'],
        '年齡': [18, 20, 19, 18],
        '城市': ['北京', '上海', '廣州', '北京']}
df = pd.DataFrame(data)

# 刪除重復(fù)行
df_dropped = df.drop_duplicates()

print(df_dropped)

輸出:

   姓名  年齡  城市
0  張三  18  北京
1  李四  20  上海
2  王五  19  廣州

上述代碼中,使用drop_duplicates()方法刪除學(xué)生信息數(shù)據(jù)框中的重復(fù)行低千。刪除后的結(jié)果只保留了第一次出現(xiàn)的重復(fù)值配阵,其他重復(fù)值被從數(shù)據(jù)框中刪除。

數(shù)據(jù)轉(zhuǎn)換

當(dāng)根據(jù)學(xué)生的姓名示血、年齡和所在城市這些實(shí)際應(yīng)用場景時棋傍,可以使用以下方法進(jìn)行數(shù)據(jù)轉(zhuǎn)換:

  1. apply()方法示例:
import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 17],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# 對年齡列應(yīng)用函數(shù)
def increment_age(age):
    return age + 1

df['年齡'] = df['年齡'].apply(increment_age)

print(df)

輸出:

   姓名  年齡  城市
0  張三  19  北京
1  李四  21  上海
2  王五  20  廣州
3  趙六  18  深圳

上述代碼中,使用apply()方法對學(xué)生信息數(shù)據(jù)框中的年齡列應(yīng)用了一個自定義的函數(shù)increment_age()难审,該函數(shù)將每個年齡加1舍沙。通過應(yīng)用函數(shù),年齡列中的值被逐個轉(zhuǎn)換剔宪。

  1. map()方法示例:
import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 17],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# 根據(jù)指定的字典進(jìn)行映射轉(zhuǎn)換
city_mapping = {'北京': 'Beijing',
                '上海': 'Shanghai',
                '廣州': 'Guangzhou',
                '深圳': 'Shenzhen'}
df['城市'] = df['城市'].map(city_mapping)

print(df)

輸出:

   姓名  年齡        城市
0  張三  18   Beijing
1  李四  20  Shanghai
2  王五  19  Guangzhou
3  趙六  17  Shenzhen

上述代碼中拂铡,使用map()方法根據(jù)指定的字典city_mapping對學(xué)生信息數(shù)據(jù)框中的城市列進(jìn)行映射轉(zhuǎn)換壹无。每個城市名稱被替換為字典中對應(yīng)的值,實(shí)現(xiàn)了城市名的轉(zhuǎn)換感帅。

數(shù)據(jù)分組和聚合

當(dāng)根據(jù)學(xué)生的姓名斗锭、年齡和所在城市這些實(shí)際應(yīng)用場景時,可以使用以下方法進(jìn)行數(shù)據(jù)分組和聚合:

  1. groupby()方法示例:
import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '張三', '李四'],
        '年齡': [18, 20, 19, 18, 20],
        '城市': ['北京', '上海', '廣州', '北京', '上海']}
df = pd.DataFrame(data)

# 按照城市進(jìn)行分組
grouped = df.groupby('城市')

print(grouped.groups)

輸出:

{'上海': [1, 4], '北京': [0, 3], '廣州': [2]}

上述代碼中失球,使用groupby()方法將學(xué)生信息數(shù)據(jù)框按照城市進(jìn)行分組岖是。輸出結(jié)果是一個字典,其中鍵是每個唯一的城市名实苞,值是分組的索引列表豺撑。

  1. sum()方法示例:
import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '張三', '李四'],
        '年齡': [18, 20, 19, 18, 20],
        '城市': ['北京', '上海', '廣州', '北京', '上海']}
df = pd.DataFrame(data)

# 按照城市進(jìn)行分組并計(jì)算總和
grouped = df.groupby('城市')
sum_age = grouped['年齡'].sum()

print(sum_age)

輸出:

城市
上海    40
北京    36
廣州    19
Name: 年齡, dtype: int64

上述代碼中,使用groupby()方法將學(xué)生信息數(shù)據(jù)框按照城市進(jìn)行分組黔牵,然后使用sum()方法計(jì)算每個城市的年齡總和聪轿。

  1. mean()方法示例:
import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '張三', '李四'],
        '年齡': [18, 20, 19, 18, 20],
        '城市': ['北京', '上海', '廣州', '北京', '上海']}
df = pd.DataFrame(data)

# 按照城市進(jìn)行分組并計(jì)算平均值
grouped = df.groupby('城市')
mean_age = grouped['年齡'].mean()

print(mean_age)

輸出:

城市
上海    20.0
北京    18.0
廣州    19.0
Name: 年齡, dtype: float64

上述代碼中,使用groupby()方法將學(xué)生信息數(shù)據(jù)框按照城市進(jìn)行分組猾浦,然后使用mean()方法計(jì)算每個城市的年齡平均值陆错。

  1. count()方法示例:
import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '張三', '李四'],
        '年齡': [18, 20, 19, 18, 20],
        '城市': ['北京', '上海', '廣州', '北京', '上海']}
df = pd.DataFrame(data)

# 按照城市進(jìn)行分組并計(jì)算計(jì)數(shù)
grouped = df.groupby('城市')
count = grouped['姓名'].count()

print(count)

輸出:

城市
上海    2
北京    2
廣州    1
Name: 姓名, dtype: int64

上述代碼中,使用groupby()方法將學(xué)生信息數(shù)據(jù)框按照城市進(jìn)行分組金赦,然后使用count()方法計(jì)算每個城市的數(shù)量音瓷。

數(shù)據(jù)合并和連接

  • concat():按照指定的軸將多個數(shù)據(jù)框連接起來。
  • merge():根據(jù)指定的列將兩個數(shù)據(jù)框進(jìn)行合并夹抗。
  • join():根據(jù)索引或指定的列將兩個數(shù)據(jù)框進(jìn)行連接绳慎。

當(dāng)根據(jù)學(xué)生的姓名、年齡和所在城市這些實(shí)際應(yīng)用場景時漠烧,可以使用以下方法進(jìn)行數(shù)據(jù)合并和連接:

  1. concat()方法示例:
import pandas as pd

# 創(chuàng)建兩個學(xué)生信息的示例數(shù)據(jù)框
data1 = {'姓名': ['張三', '李四'],
         '年齡': [18, 20],
         '城市': ['北京', '上海']}
data2 = {'姓名': ['王五', '趙六'],
         '年齡': [19, 21],
         '城市': ['廣州', '深圳']}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# 按照行方向連接兩個數(shù)據(jù)框
result = pd.concat([df1, df2])

print(result)

輸出:

   姓名  年齡  城市
0  張三  18  北京
1  李四  20  上海
0  王五  19  廣州
1  趙六  21  深圳

上述代碼中杏愤,使用concat()方法按照行方向?qū)蓚€學(xué)生信息數(shù)據(jù)框df1df2連接起來,形成一個新的數(shù)據(jù)框沽甥。連接操作會按照順序?qū)蓚€數(shù)據(jù)框的行進(jìn)行合并。

  1. merge()方法示例:
import pandas as pd

# 創(chuàng)建兩個學(xué)生信息的示例數(shù)據(jù)框
data1 = {'姓名': ['張三', '李四'],
         '年齡': [18, 20]}
data2 = {'姓名': ['李四', '王五'],
         '城市': ['上海', '廣州']}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# 根據(jù)姓名列將兩個數(shù)據(jù)框進(jìn)行合并
result = pd.merge(df1, df2, on='姓名')

print(result)

輸出:

   姓名  年齡  城市
0  李四  20  上海

上述代碼中乏奥,使用merge()方法根據(jù)姓名列將兩個學(xué)生信息數(shù)據(jù)框df1df2進(jìn)行合并摆舟。合并操作會將具有相同姓名的行進(jìn)行匹配,并將對應(yīng)的年齡和城市列合并在一行上邓了。

  1. join()方法示例:
import pandas as pd

# 創(chuàng)建兩個學(xué)生信息的示例數(shù)據(jù)框
data1 = {'年齡': [18, 20, 19],
         '城市': ['北京', '上海', '廣州']}
data2 = {'姓名': ['張三', '李四', '王五'],
         '成績': ['優(yōu)秀', '良好', '及格']}
df1 = pd.DataFrame(data1, index=['張三', '李四', '王五'])
df2 = pd.DataFrame(data2, index=['張三', '李四', '王五'])

# 使用join()方法將兩個數(shù)據(jù)框連接
result = df1.join(df2)

print(result)

輸出:

    年齡  城市  姓名  成績
張三  18  北京  張三  優(yōu)秀
李四  20  上海  李四  良好
王五  19  廣州  王五  及格

上述代碼中恨诱,使用join()方法根據(jù)索引將兩個學(xué)生信息數(shù)據(jù)框df1df2進(jìn)行連接。連接操作會將具有相同索引的行進(jìn)行匹配骗炉,并將對應(yīng)的列合并在一行上照宝。

數(shù)據(jù)篩選和過濾

當(dāng)根據(jù)學(xué)生的姓名、年齡和所在城市進(jìn)行數(shù)據(jù)篩選和過濾時句葵,可以使用以下方法來實(shí)現(xiàn):

  1. 使用[]進(jìn)行條件篩選:
import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 22],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# 使用[]進(jìn)行條件篩選
result = df[(df['姓名'] == '張三') & (df['年齡'] >= 18) & (df['城市'] == '北京')]

print(result)

輸出:

   姓名  年齡  城市
0  張三  18  北京

代碼理解:

  • 使用[]來篩選符合特定條件的數(shù)據(jù)厕鹃。
  • []內(nèi)兢仰,通過指定條件(df['姓名'] == '張三') & (df['年齡'] > 18) & (df['城市'] == '北京')對數(shù)據(jù)進(jìn)行篩選。
  • 打印符合條件的結(jié)果剂碴。
  1. 使用query()方法進(jìn)行數(shù)據(jù)篩選:
import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 22],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# 使用query()方法進(jìn)行數(shù)據(jù)篩選
result = df.query("姓名 == '李四' and 年齡 > 18 and 城市 == '上海'")

print(result)

輸出:

   姓名  年齡  城市
1  李四  20  上海

代碼理解:

  • 使用query()方法來篩選符合特定條件的數(shù)據(jù)把将。
  • query()方法內(nèi),傳入表達(dá)式"姓名 == '李四' and 年齡 > 18 and 城市 == '上海'"來進(jìn)行數(shù)據(jù)篩選忆矛。
  • 打印符合條件的結(jié)果察蹲。
  1. 使用loc[]進(jìn)行行和列的篩選:
import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 22],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# 使用loc[]進(jìn)行行和列的篩選
result = df.loc[(df['姓名'] == '王五'), ['姓名', '城市']]

print(result)

輸出:

   姓名  城市
2  王五  廣州

代碼理解:

  • 使用loc[]來篩選符合特定條件的行和列。
  • loc[]內(nèi)催训,通過指定行的條件(df['姓名'] == '王五')和列的標(biāo)簽['姓名', '城市']洽议,來進(jìn)行數(shù)據(jù)篩選。
  • 打印符合條件的結(jié)果漫拭。
  1. 使用iloc[]進(jìn)行行和列的篩選:
import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 22],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# 使用iloc[]進(jìn)行行和列的篩選
result = df.iloc[[1, 3], [0, 2]]

print(result)

輸出:

   姓名  城市
1  李四  上海
3  趙六  深圳

代碼理解:

  • 使用iloc[]來根據(jù)位置索引篩選行和列亚兄。
  • iloc[]內(nèi),傳入需要篩選的行索引[1, 3]和列索引[0, 2]嫂侍,來進(jìn)行數(shù)據(jù)篩選儿捧。
  • 打印符合條件的結(jié)果。
  1. 使用&進(jìn)行邏輯與操作:
import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 22],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# 使用邏輯與操作符進(jìn)行多條件篩選
result = df[(df['年齡'] > 18) & (df['城市'] == '廣州')]

print(result)

輸出:

   姓名  年齡  城市
2  王五  19  廣州

代碼理解:

  • 使用&進(jìn)行邏輯與操作符挑宠,用于組合多個條件進(jìn)行邏輯與操作菲盾。
  • df[]內(nèi),通過指定條件(df['年齡'] > 18) & (df['城市'] == '廣州')對數(shù)據(jù)進(jìn)行篩選各淀。
  • 打印符合條件的結(jié)果懒鉴。
  1. 使用|進(jìn)行邏輯或操作:
import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 22],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# 使用邏輯或操作符進(jìn)行多條件篩選
result = df[(df['年齡'] > 20) | (df['城市'] == '廣州')]

print(result)

輸出:

   姓名  年齡  城市
2  王五  19  廣州
3  趙六  22  深圳

代碼理解:

  • 使用|進(jìn)行邏輯或操作符,用于組合多個條件進(jìn)行邏輯或操作碎浇。
  • df[]內(nèi)临谱,通過指定條件(df['年齡'] > 20) | (df['城市'] == '廣州')對數(shù)據(jù)進(jìn)行篩選。
  • 打印符合條件的結(jié)果奴璃。
  1. 使用isin()方法進(jìn)行數(shù)據(jù)包含性檢查:
import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 22],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# 使用isin()方法進(jìn)行數(shù)據(jù)包含性檢查
cities = ['上海', '廣州']
result = df[df['城市'].isin(cities)]

print(result)

輸出:

   姓名  年齡  城市
1  李四  20  上海
2  王五  19  廣州

代碼理解:

  • 使用isin()方法悉默,檢查數(shù)據(jù)是否包含在指定的列表中。
  • df[]內(nèi)苟穆,通過對列df['城市']應(yīng)用isin(cities)來進(jìn)行數(shù)據(jù)包含性檢查抄课。
  • 打印符合條件的結(jié)果。
  1. 使用str.contains()方法進(jìn)行字符串匹配:
import pandas as pd

# 創(chuàng)建學(xué)生信息的示例數(shù)據(jù)框
data = {'姓名': ['張三', '李四', '王五', '趙六'],
        '年齡': [18, 20, 19, 22],
        '城市': ['北京', '上海', '廣州', '深圳']}
df = pd.DataFrame(data)

# 使用str.contains()方法進(jìn)行字符串匹配
result = df[df['姓名'].str.contains('張')]

print(result)

輸出:

   姓名  年齡  城市
0  張三  18  北京

代碼理解:

  • 使用str.contains()方法雳旅,檢查字符串是否包含指定的子字符串跟磨。
  • df[]內(nèi),通過對列df['姓名']應(yīng)用str.contains('張')來進(jìn)行字符串匹配攒盈。
  • 打印符合條件的結(jié)果抵拘。

以上是根據(jù)學(xué)生的姓名、年齡和所在城市進(jìn)行數(shù)據(jù)篩選和過濾的代碼示例和代碼理解型豁。根據(jù)實(shí)際應(yīng)用需求僵蛛,選擇適合的方法進(jìn)行數(shù)據(jù)處理尚蝌。

總結(jié)

在辦公場景中,Excel和CSV文件是常見的數(shù)據(jù)處理和分析工具墩瞳。本文介紹了一些Excel和CSV自動化處理的魔法驼壶,幫助提高工作效率和準(zhǔn)確性。

  1. 使用Python的pandas庫進(jìn)行數(shù)據(jù)處理:pandas是一個功能強(qiáng)大的數(shù)據(jù)處理庫喉酌,可以讀取热凹、寫入和編輯Excel和CSV文件。它提供了豐富的功能泪电,如數(shù)據(jù)篩選般妙、排序、合并等相速〉欤可以使用pandas來自動化處理文件中的數(shù)據(jù),提取所需信息并進(jìn)行分析突诬。
  2. 使用openpyxl庫實(shí)現(xiàn)Excel自動化:openpyxl是一個用于處理Excel文件的Python庫苫拍。它可以讀取、創(chuàng)建和修改Excel文件旺隙,可以自動化進(jìn)行表格绒极、圖表和公式的操作。使用openpyxl可以編寫腳本來批量處理Excel文件蔬捷,從而提高生產(chǎn)力垄提。
  3. 使用csv模塊處理CSV文件:Python的csv模塊提供了簡單的接口來讀取和寫入CSV文件。它可以幫助實(shí)現(xiàn)CSV文件的自動化處理周拐,例如數(shù)據(jù)清洗铡俐、格式轉(zhuǎn)換和數(shù)據(jù)提取等。通過編寫腳本妥粟,可以快速审丘、準(zhǔn)確地處理大量的CSV數(shù)據(jù)。
  4. 利用VBA進(jìn)行Excel宏編程:Excel自帶的Visual Basic for Applications (VBA)是一種宏語言勾给,可以編寫腳本來自動化執(zhí)行各種Excel操作滩报。通過編寫VBA宏,可以自動化處理Excel文件中的數(shù)據(jù)锦秒、圖表露泊、格式喉镰、公式等旅择,從而提高工作效率。
  5. 使用Excel公式進(jìn)行數(shù)據(jù)計(jì)算和分析:Excel內(nèi)置了很多強(qiáng)大的函數(shù)和公式侣姆,可以進(jìn)行數(shù)據(jù)計(jì)算生真、統(tǒng)計(jì)和分析沉噩。通過編寫復(fù)雜數(shù)學(xué)公式,可以自動化進(jìn)行數(shù)據(jù)處理和分析柱蟀,減少手動操作的時間和錯誤川蒙。

以上是Excel和CSV自動化處理的一些魔法。通過結(jié)合Python的pandas长已、openpyxl庫畜眨、csv模塊和Excel自帶的VBA和公式,可以實(shí)現(xiàn)自動處理和分析大量的數(shù)據(jù)术瓮,提高工作效率和準(zhǔn)確性康聂。

請注意,在使用自動化工具和腳本時胞四,始終保持?jǐn)?shù)據(jù)的準(zhǔn)確性和安全性恬汁。在處理敏感數(shù)據(jù)時,確保遵守相關(guān)的數(shù)據(jù)保護(hù)和隱私法規(guī)辜伟。

如果您還有其他關(guān)于Excel和CSV自動化處理的問題氓侧,我將非常樂意繼續(xù)幫助您!

歡迎關(guān)注微信公眾號【千練極客】导狡,盡享更多干貨文章约巷!

歡迎關(guān)注微信公眾號【千練極客】,盡享更多干貨文章烘豌!

歡迎關(guān)注微信公眾號【千練極客】载庭,盡享更多干貨文章!

本文由博客一文多發(fā)平臺 OpenWrite 發(fā)布廊佩!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末囚聚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子标锄,更是在濱河造成了極大的恐慌顽铸,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件料皇,死亡現(xiàn)場離奇詭異谓松,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)践剂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門鬼譬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人逊脯,你說我怎么就攤上這事优质。” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵巩螃,是天一觀的道長演怎。 經(jīng)常有香客問我,道長避乏,這世上最難降的妖魔是什么爷耀? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮拍皮,結(jié)果婚禮上歹叮,老公的妹妹穿的比我還像新娘。我一直安慰自己铆帽,他們只是感情好盗胀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锄贼,像睡著了一般票灰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宅荤,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天屑迂,我揣著相機(jī)與錄音,去河邊找鬼冯键。 笑死惹盼,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的惫确。 我是一名探鬼主播手报,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼改化!你這毒婦竟也來了掩蛤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤陈肛,失蹤者是張志新(化名)和其女友劉穎揍鸟,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體句旱,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡阳藻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了谈撒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腥泥。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖啃匿,靈堂內(nèi)的尸體忽然破棺而出蛔外,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布冒萄,位于F島的核電站,受9級特大地震影響橙数,放射性物質(zhì)發(fā)生泄漏尊流。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一灯帮、第九天 我趴在偏房一處隱蔽的房頂上張望崖技。 院中可真熱鬧,春花似錦钟哥、人聲如沸迎献。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吁恍。三九已至,卻和暖如春播演,著一層夾襖步出監(jiān)牢的瞬間冀瓦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工写烤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留翼闽,地道東北人。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓洲炊,卻偏偏與公主長得像感局,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子暂衡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容