利用pandas库进行数据分析(二)

一.这段代码首先读取了CSV文件,然后按照国家和省份对店铺进行了分组,并统计了每个分组的店铺数量。最后,它打印了分组后的索引,即每个分组的键

# coding=utf-8
import pandas as pd
import numpy as np

file_path = './starbucks_store_worldwide.csv'

df = pd.read_csv(file_path)

# 按照国家分组,并统计每个国家店铺的数量
grouped = df.groupby(by='Country')
country_count = grouped['Brand'].count()
print(country_count['US'])
print(country_count['CN'])

# 统计中国每个省店铺的数量
china_data = df[df['Country'] == 'CN']
grouped = china_data.groupby(by='State/Province').count()['Brand']
print(grouped)

# 数据按照多个条件进行分组,返回Series
grouped = df['Brand'].groupby(by=[df['Country'], df['State/Province']]).count()
print(grouped)
print(type(grouped))

# 数据按照多个条件进行分组,返回DataFrame
grouped1 = df[['Brand']].groupby(by=[df['Country'], df['State/Province']]).count()
print(grouped1, type(grouped1))

# 索引的方法和属性
print(grouped1.index)  # 打印分组后的索引,即每个分组的键

二.使用pandas读取CSV文件,准备了店铺数量排名前十的国家数据,并使用matplotlib绘制了柱状图

# coding=utf-8
import pandas as pd
from matplotlib import pyplot as plt

# 指定CSV文件路径
file_path = './starbucks_store_worldwide.csv'

# 使用pandas读取CSV文件
df = pd.read_csv(file_path)

# 使用pandas的groupby方法按照'Country'列进行分组,并计算每个国家下的店铺数量
# count()函数用于计算分组后的数量,这里计算的是'Brand'列的数量
# sort_values函数用于对分组后的数据进行排序,按照店铺数量降序排列
# [:10]用于取排序后的前10个国家
data1 = df.groupby('Country').count()['Brand'].sort_values(ascending=False)[:10]

# 获取排序后的国家名称和店铺数量
_x = data1.index  # 国家名称
_y = data1.values  # 店铺数量

# 创建一个大小为20x8,分辨率为100的图形
plt.figure(figsize=(20, 8), dpi=100)

# 绘制柱状图,x轴是国家名称的索引,y轴是店铺数量
# 颜色设置为橙色
plt.bar(range(len(_x)), _y, color='orange')

# 设置x轴的刻度,使其对应国家名称
plt.xticks(range(len(_x)), _x)

# 显示图形
plt.show()

这段代码的功能如下:

  1. 读取包含星巴克店铺数据的CSV文件。

  2. 按照国家对数据进行分组,并计算每个国家下的店铺数量。

  3. 将国家按店铺数量降序排列,并选择前10个国家。

  4. 准备数据用于绘图,国家名称作为x轴标签,店铺数量作为y轴的值。

  5. 使用matplotlib绘制柱状图,x轴表示前10个国家,y轴显示每个国家星巴克店铺的数量。

运行效果如下:

 三.使用pandas读取CSV文件,过滤出中国的数据,然后绘制了中国店铺数量排名前25的城市的水平柱状图

# coding=utf-8
import pandas as pd
from matplotlib import pyplot as plt
from matplotlib import font_manager

# 设置matplotlib中文字体
my_font = font_manager.FontProperties(fname='C:\Windows\Fonts\msyh.ttc')

# 设置pandas显示的最大行数、列数和宽度
pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 100)
pd.set_option('display.width', 1000)

# 指定CSV文件路径
file_path = './starbucks_store_worldwide.csv'

# 使用pandas读取CSV文件
df = pd.read_csv(file_path)

# 过滤出中国的数据
df = df[df['Country'] == 'CN']

# 打印前1行数据,用于检查
print(df.head(1))

# 使用pandas的groupby方法按照'City'列进行分组,并计算每个城市下的店铺数量
# count()函数用于计算分组后的数量,这里计算的是'Brand'列的数量
# sort_values函数用于对分组后的数据进行排序,按照店铺数量降序排列
# [:25]用于取排序后的前25个城市
data1 = df.groupby('City').count()['Brand'].sort_values(ascending=False)[:25]

# 获取排序后的城市名称和店铺数量
_x = data1.index  # 城市名称
_y = data1.values  # 店铺数量

# 创建一个大小为20x12,分辨率为100的图形
plt.figure(figsize=(20, 12), dpi=100)

# 绘制水平柱状图,y轴是城市名称的索引,x轴是店铺数量
# 高度设置为0.3,颜色设置为橙色
# 使用[::-1]将_x和_y反转,使得数量从大到小绘制
plt.barh(range(len(_x)), _y[::-1], height=0.3, color='orange')

# 设置y轴的刻度,使其对应城市名称,并使用中文字体
plt.yticks(range(len(_x)), _x[::-1], font_properties=my_font)

# 显示图形
plt.show()

这段代码的功能如下:

  1. 设置了matplotlib的中文字体。

  2. 设置了pandas显示的最大行数、列数和宽度。

  3. 读取了包含星巴克店铺数据的CSV文件,并过滤出了中国的数据。

  4. 使用pandas的groupby方法按照'City'列进行分组,并计算每个城市下的店铺数量。

  5. 将城市按店铺数量降序排列,并选择前25个城市。

  6. 准备数据用于绘图,城市名称作为y轴标签,店铺数量作为x轴的值。

  7. 使用matplotlib绘制水平柱状图,y轴表示前25个城市,x轴显示每个城市星巴克店铺的数量。

运行效果如下:

以上文章涉及的starbucks_store_worldwide数据资源链接如下:

starbucks_store_worldwide.zip文件大小:1.1 M|icon-default.png?t=N7T8https://wwt.lanzoum.com/iTUap1oapq9g

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NJU_AI_NB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值