import collections import matplotlib.pyplot as plt # 绘制不同客户类型客户数量饼图 TypeRate = collections.Counter(KMeansModel.labels_) name_list = ['潜在高风险客户', '禁入类客户及高风险客户', '一般风险客户', '一般客户'] num_list = TypeRate.values() print('查看各类客户数量:', num_list) plt.figure(figsize=(8, 8)) # 绘制饼图 explode = [0, 0.1, 0, 0] # 分离禁入类客户和高风险客户 plt.pie(num_list, labels=name_list, autopct='%1.1f%%', pctdistance=1.15, explode=explode, labeldistance=1.05, startangle=90) plt.show()
时间: 2024-01-07 21:05:04 浏览: 178
这段代码是用 Python 中的 matplotlib 库绘制不同客户类型客户数量的饼图。首先使用 collections 库中的 Counter 函数统计 KMeansModel.labels_ 中不同值的数量,即不同客户类型的客户数量。然后定义了一个客户类型名称列表和客户数量列表,用于绘制饼图。接着设置了一些饼图的参数,如分离禁入类客户和高风险客户、绘制百分比和标签等。最后调用 plt.show() 函数显示饼图。
相关问题
使用 Python 的 `matplotlib` 库来实现获取 `https://movie.douban.com/top250` 里的年代分析折线图、类别分析柱状图以及地区分析饼图
在Python中,可以使用`requests`库来获取网页数据,然后结合`matplotlib`库来绘制相应的图表。这里是一个简单的步骤说明:
1. **安装必要的库**:
首先,确保已经安装了`requests`和`beautifulsoup4`库,用于抓取网页内容,以及`matplotlib`库,用于绘图。如果没有安装,可以使用以下命令安装:
```
pip install requests beautifulsoup4 matplotlib pandas
```
2. **获取豆瓣Top250电影数据**:
使用`requests`库从指定URL获取HTML数据:
```python
import requests
url = "https://movie.douban.com/top250"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')
data = []
for movie in soup.find_all('div', class_='hd'):
title = movie.h3.a.text
year = movie.find('span', class_='year').text
data.append({'title': title, 'year': int(year)})
```
3. **分析数据并绘制图表**:
然后你可以对数据按年代、类别或地区进行分析,并用`pandas`处理数据,最后用`matplotlib`绘制图表。
- **年代分析折线图**:
```python
from collections import Counter
import matplotlib.pyplot as plt
years = [d['year'] for d in data]
year_counts = Counter(years)
fig, ax = plt.subplots()
ax.plot(year_counts.keys(), year_counts.values())
ax.set_xlabel('Year')
ax.set_ylabel('Movie Count')
ax.set_title('Top 250 Movies by Year')
plt.show()
```
- **类别分析柱状图**:
分析电影类别需要额外的信息,如果页面上有直接提供分类的数据,就按类别统计。如果没有,可能需要爬取每个电影详细页面提取信息。假设我们已经有了一个包含类别字段的列表,可以这样画:
```python
genre_counts = Counter([d['genre'] for d in data if 'genre' in d])
plt.bar(genre_counts.keys(), genre_counts.values())
# ... 继续设置轴标签和标题
plt.show()
```
- **地区分析饼图**:
类似地,需要获取电影的地区数据。如果没有直接提供,可能需要通过其他方式(如电影制作国家)。假设有地区字段:
```python
regions = [d['region'] for d in data if 'region' in d]
region_counts = Counter(regions)
labels, sizes = zip(*region_counts.items())
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.title('Top 250 Movies by Region')
plt.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle.
plt.show()
```
python统计列表中元素出现的次数,并绘制饼图
好的,您可以使用Python内置的collections模块中的Counter类来统计列表中元素出现的次数,然后使用matplotlib库来绘制饼图。
下面是一个示例代码:
```python
import collections
import matplotlib.pyplot as plt
# 示例列表
lst = ['apple', 'banana', 'apple', 'orange', 'banana', 'banana']
# 使用Counter类统计列表中元素出现的次数
counter = collections.Counter(lst)
# 获取元素和对应的出现次数
labels, values = zip(*counter.items())
# 绘制饼图
plt.pie(values, labels=labels, autopct='%1.1f%%')
plt.axis('equal')
plt.show()
```
执行完上面的代码后,就可以看到绘制出的饼图了。
阅读全文