Excel file parser
Published in:2024-11-21 |
Words: 793 | Reading time: 3min | reading:

Excel file parser

introduce

pandas 是一个开源的 Python 数据分析库,提供了高效的数据结构(如 DataFrame 和 Series)和多种数据操作工具。它非常适合用于数据清洗、数据分析和数据处理等任务,尤其是在处理表格型数据(例如 Excel 表格、CSV 文件、SQL 数据库等)时非常强大。

pandas 的名称源自“panel data”(面板数据),即带有时间和多维索引的复杂数据结构。虽然这个名字与面板数据相关,但 pandas 已经成为了所有类型数据分析的标准工具之一。

核心功能

通过 Series 和 DataFrame 两个核心数据结构,pandas 提供了极其灵活和高效的操作方式,几乎是进行数据分析和科学计算时的标准工具。

  • 读写excel\sql\csv文件
  • 数据过滤 选择
  • 数据清洗 转换
  • 数据合并连接
  • 数据透视
  • 数据可视化
  • 大数据处理

lib

pandas

1
2

pip install pandas

use demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import pandas as pd

import re

"""
加权平均内容=
∑(文本长度)
————————————
∑(内容×文本长度)
"""

# 读取Excel文件(假设你的数据已经保存在Excel文件中)
file_path = './data/data.xlsx' # 替换为实际的Excel文件路径

# 读取Excel文件
df = pd.read_excel(file_path)

# 查看原始数据(可选)
print("原始数据:")
print(df.head())

# 处理“内容”列,检查是否为字符串,若是百分比文本,则转换为浮动类型
# 先检查内容列的数据类型
if df['内容'].dtype == 'object': # 如果是字符串类型
df['内容'] = df['内容'].str.replace('%', '').astype(float) / 100 # 去掉百分号并转换为浮动类型
elif df['内容'].dtype != 'float': # 如果是其他数值类型但不是float
df['内容'] = df['内容'].astype(float) # 强制转换为浮动类型

# 提取文件名的核心部分,例如“超宠时代” 或 “小黑龙” 等
df['文件名'] = df['文件名'].apply(lambda x: re.sub(r'\d+$', '', str(x))) # 强制转换为字符串,去除名称末尾的数字

# 按内容和文件名分组,计算每个组的文本长度总和和加权平均内容
grouped = df.groupby(['内容', '文件名']).agg(
文本长度总和=('文本长度', 'sum'),
内容加权平均=('内容', lambda x: (x * df.loc[x.index, '长度']).sum() / x.sum())
).reset_index()

# 将加权平均内容转换为百分比形式
grouped['最低加权平均内容'] = grouped['内容加权平均'].min()

# 格式化为百分比,保留两位小数
grouped['内容加权平均'] = grouped['内容加权平均'].apply(lambda x: f"{x / 1000:.2f}%")

# 合并后的数据
merged_data = []
for _, group in grouped.iterrows():
merged_data.append({
'内容': group['内容']
})

# 将合并后的数据转化为DataFrame
merged_df = pd.DataFrame(merged_data)

# 输出合并后的结果
print("\n合并后的数据:")
print(merged_df)

# 保存为新的Excel文件
output_path = 'result_data.xlsx' # 输出路径
merged_df.to_excel(output_path, index=False)

print(f"\n数据已保存到 {output_path}")


Prev:
Appium Debug Bridge
Next:
nltk lib use