pandas讀取excel
Pandas是python的一個數據分析包,納入了大量庫和一些標準的數據模型,提供了高效地操作大型數據集所需的工具。
Pandas提供了大量能使我們快速便捷地處理數據的函數和方法。
Pandas官方文檔:https://pandas.pydata.org/pandas-docs/stable/
Pandas中文文檔:https://www.pypandas.cn、
一、安裝包
pandas處理Excel需要xlrd、openpyxl依賴包
pip3 install pandas pip3 install xlrd pip3 install openpyxl
二、創建Excel,寫入數據
import pandas as pd
from pandas import DataFrame
#寫
dic1 = {'標題列1': ['張三','李四'],
'標題列2': [80, 90]
}
df = pd.DataFrame(dic1)
df.to_excel('1.xlsx', index=False)
read_excel方法說明
pd.read_excel(io, sheet_name=0, header=0, names=None, index_col=None,
usecols=None, squeeze=False,dtype=None, engine=None,
converters=None, true_values=None, false_values=None,
skiprows=None, nrows=None, na_values=None, parse_dates=False,
date_parser=None, thousands=None, comment=None, skipfooter=0,
convert_float=True, **kwds)
io:excel文件
sheet_name:返回指定sheet,默認索引0返回第一個,也可用名稱,如果返回多個則可用列表,為None則返回全表
header:指定表頭,也可用列表指定多行
names:自定義列名,長度和Excel列長度必須一致
index_col:用作索引的列
usecols:讀取指定的列,參數為列表,如[0,1]表示第1和第2列
三、讀取Excel
import pandas as pd from pandas import DataFrame data = pd.read_excel('1.xlsx') # 讀 print(data.values) # 查看所有的值 print(data.values[0]) # 查看第一行的值 print(data['標題列1'].values) # 查看某一列所有的值 data['標題列3'] = None # 新增列 data.loc[3] = ['王五', 100, '男'] # 新增行 data = data.drop([0, 1], axis=0) # 刪除行:axis=0 data.drop('標題列3', axis=1) # 刪除列:axis=1 data.fillna(value=0, inplace=True) # 缺失數據補 data.fillna(method='ffill', axis=0) # axis = 0 垂直 method=ffill 前 表示使用垂直上方的值對空值進行填充 data.fillna(method='bfill', axis=1) # axis = 1 水平 method=bfill 后 表示使用水平后邊的值對空值進行填充 data.dropna(subset=['hint'], inplace=True) # 刪除丟失數據 data.sort_values(by='hint', ascending=False) # 排序 a = pd.concat([data, data], axis=0) # DataFrame拼接 a.reset_index(drop=True, inplace=True) # 修正索引 print(a['hint'].groupby(a['keyword']).mean()) # 按照 keyword分組 求hint平均值 DataFrame(data).to_excel('1.xlsx', sheet_name='Sheet1', index=False, header=True) # 保存
三、合并Excel


兩天的數據合并在一起
import pandas as pd left = pd.DataFrame(pd.read_excel("數據.xlsx", sheet_name="5.25付費")) right = pd.DataFrame(pd.read_excel("數據.xlsx", sheet_name="5.26付費")) result = pd.merge(left, right, how='outer', on=['分類', '排名']) a = result.sort_values(['分類', '排名'], ascending=[False, True]) a.to_excel('付費1.xlsx', index=False)
四、同一個excel寫入不同的sheet
li = ['930743975', '976927698'] with pd.ExcelWriter('20-02-05.xlsx') as writer: for app_id in li: info = [["keyword_id", "keyword"], ['11', 'aa']] df = pd.DataFrame(info) df.to_excel(writer, sheet_name=f"{app_id}", index=False, header=False) writer.save() writer.close()
四、不同的excel寫入不同的sheet
import os import datetime import pandas as pd count = 1 def date_info(i): global count now = datetime.datetime.now() - datetime.timedelta(days=2) day = now + datetime.timedelta(days=i) count += 1 return (day.strftime("%Y-%m-%d"), day.strftime("%Y-%m"), day.strftime("%d")) for i in range(2): sheet_name, month, day = date_info(i) keywords = [["關鍵詞", "排行1", "變動0", "指數6000", "結果數222", "上升0", "下降0"]] excel_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), f"{sheet_name}.xlsx") writer = pd.ExcelWriter(excel_path, engine='openpyxl') df_row = pd.DataFrame(columns=["關鍵詞", "排行", "變動", "指數", "結果數", "上升", "下降"]) df_row.to_excel(writer, sheet_name=f"{sheet_name}", index=False, header=False) keywords.insert(0, ["關鍵詞", "排行", "變動", "指數", "結果數", "上升", "下降"]) ds = pd.DataFrame(keywords) df = df_row.append(ds, ignore_index=True) df.to_excel(excel_path, index=False, header=False)
學習鏈接

浙公網安備 33010602011771號