pandas统计含有某个字符的个数
时间: 2023-08-05 14:33:16 浏览: 137
可以使用 Pandas 的字符串方法中的 count() 函数来统计含有某个字符的个数。例如,假设有一个名为 df 的 DataFrame,其中有一个名为 column_name 的列,我们想要统计该列中含有字符 "a" 的个数,可以使用以下代码:
```
df['column_name'].str.count('a').sum()
```
这将返回该列中所有行中含有字符 "a" 的总个数。如果想要在整个 DataFrame 中统计含有字符 "a" 的个数,可以使用以下代码:
```
df.astype(str).apply(lambda x: x.str.count('a')).sum().sum()
```
这将将整个 DataFrame 转换为字符串类型,然后对每个元素使用 count() 函数,最后将所有的结果求和得到含有字符 "a" 的总个数。
相关问题
pandas统计数据里作者列[]或【】里的国家名出现次数,没有[]或【】则表示是中国作者
可以使用 Pandas 的 `str.contains()` 方法来查找包含指定字符串的行,然后再统计符合条件的行数即可。
假设你的 DataFrame 名称为 `df`,作者列的名称为 `author`,则可以按照以下步骤进行操作:
1. 先找出包含国家名的行:
``` python
df['country'] = df['author'].str.extract('\[(.*?)\]', expand=False) # 提取[]中的内容到新列
mask = df['country'].str.contains('国家名') # 创建包含国家名的行的布尔索引
```
2. 统计包含国家名的行数:
``` python
count = mask.sum() # 统计布尔索引中为 True 的个数
```
3. 统计没有 [] 或 【】 的中国作者数:
``` python
china_count = (df['country'].isna() & (df['author'].str.contains('中国') | df['author'].str.contains('CN'))).sum()
```
其中,`isna()` 方法用于判断该行的 `country` 列是否为空值,`&` 表示逻辑与操作,`|` 表示逻辑或操作。
最终的代码可能类似于:
``` python
df['country'] = df['author'].str.extract('\[(.*?)\]', expand=False)
mask = df['country'].str.contains('国家名')
count = mask.sum()
china_count = (df['country'].isna() & (df['author'].str.contains('中国') | df['author'].str.contains('CN'))).sum()
```
需要将 `国家名` 替换为你需要统计的国家名,同时将 `中国` 替换为你需要统计的其他国家名(如果有的话)。
python获取excel数据,分别是车间号,取样时间,样品类型,检验结果,备注,先按照车间号进行分组,每组数据再按照样品类型分组,计算每组数据检验结果为合格的占比,结果以百分比显示,再计算每组数据备注含有脱镀字符的占比,再计算每组数据备注含有破断低字符的占比,再计算每组数据备注含有颗粒多字符的占比,再计算每组数据备注含有颗粒少字符的占比,再计算每组数据备注含有团聚字符的占比,均以百分比显示,然后输出数据透视表,以车间号为行索引,显示每组数据的个数,合格数据的个数,最后显示总体的合格占比,脱镀占比,破断低占比,颗粒多占比,颗粒少占比,团聚占比,最后将数据透视表保存到excel表中
非常感谢您的问题!根据您的要求,需要使用 Python 对 Excel 数据进行处理,并生成数据透视表并保存到 Excel 表中。
首先,您需要安装以下 Python 库:pandas、openpyxl。
然后,您可以使用以下代码来读取 Excel 数据,按照车间号和样品类型进行分组,并计算各种占比,最后生成数据透视表并保存到 Excel 表中:
```
import pandas as pd
# 读取 Excel 数据
df = pd.read_excel('data.xlsx')
# 按照车间号和样品类型进行分组
grouped = df.groupby(['车间号', '样品类型'])
# 计算各种占比
results = grouped.agg({
'检验结果': lambda x: sum(x == '合格') / len(x),
'备注': lambda x: sum(x.str.contains('脱镀字符')) / len(x),
'备注': lambda x: sum(x.str.contains('破断低字符')) / len(x),
'备注': lambda x: sum(x.str.contains('颗粒多字符')) / len(x),
'备注': lambda x: sum(x.str.contains('颗粒少字符')) / len(x),
'备注': lambda x: sum(x.str.contains('团聚字符')) / len(x)
})
# 生成数据透视表
pivot_table = pd.pivot_table(
df,
index='车间号',
values='检验结果',
aggfunc=['count', lambda x: sum(x == '合格'), lambda x: sum(x == '合格') / len(x)],
columns='备注'
)
# 保存数据透视表到 Excel 表中
writer = pd.ExcelWriter('pivot_table.xlsx')
pivot_table.to_excel(writer, 'Sheet1')
writer.save()
```
希望能帮助您解决问题!如果您有任何其他问题,欢迎提出哦~
阅读全文