DataFrame序列结构中城市列作为横坐标的代码
时间: 2024-03-22 20:42:25 浏览: 18
假设你有一个名为 `data` 的 DataFrame,其中包含城市和其对应的数值。你可以使用 pandas 库的 `plot()` 函数来将城市列作为横坐标,代码如下:
```python
import pandas as pd
# 创建 DataFrame
data = pd.DataFrame({
'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen', 'Chengdu'],
'value': [100, 120, 80, 90, 70]
})
# 将城市列作为横坐标,绘制折线图
data.plot(x='city', y='value')
```
这将绘制一个折线图,其中横坐标为城市名称,纵坐标为对应数值。你可以根据需要修改绘图的样式、标题等。
相关问题
DataFrame序列结构中城市列作为横坐标,城市列都是汉字,绘制柱状图
如果 DataFrame 序列结构中城市列都是汉字,你可以使用 matplotlib 库来绘制柱状图,并使用中文字体显示汉字。以下是一个示例代码:
```python
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
# 设置中文字体,以便显示汉字
font = FontProperties(fname=r'path/to/font.ttf', size=14)
# 创建 DataFrame
data = pd.DataFrame({
'city': ['北京', '上海', '广州', '深圳', '成都'],
'value': [100, 120, 80, 90, 70]
})
# 创建画布和子图
fig, ax = plt.subplots()
# 绘制柱状图
ax.bar(data['city'], data['value'])
# 设置 x 轴标签和标题,并使用中文字体显示汉字
ax.set_xlabel('城市', fontproperties=font)
ax.set_ylabel('数值', fontproperties=font)
ax.set_title('城市数值分布', fontproperties=font)
# 显示图形
plt.show()
```
在上面的代码中,`path/to/font.ttf` 是你本地存放中文字体的路径。你可以根据需要修改字体文件的路径和大小,以适应不同的显示需求。
修改一下横坐标的顺序
要修改横坐标的顺序,可以先将结果表格中的列顺序调整一下,再进行绘图。可以使用 `reindex` 方法来重新排序列的顺序。修改代码如下:
```
import pandas as pd
import matplotlib.pyplot as plt
# 创建 DataFrame
df = pd.DataFrame({
'姓名': ['张三', '李四', '王五', '赵六', '钱七', '孙八'],
'年级': [1, 2, 1, 2, 3, 3],
'上网时长段': ['<1h', '1-2h', '2-3h', '3-4h', '4-5h', '>5h']
})
# 按年级和上网时长段分组,并统计每个年级内每个上网时长段的学生人数
result = df.groupby(['年级', '上网时长段'])['姓名'].count().unstack()
# 修改列的顺序
result = result.reindex(columns=['<1h', '1-2h', '2-3h', '3-4h', '4-5h', '>5h'])
# 绘制合并后的条形图
fig, ax = plt.subplots(figsize=(8, 6))
result.plot(kind='bar', ax=ax, width=1)
ax.legend(title='年级')
ax.set_xlabel('上网时长段')
ax.set_ylabel('学生人数')
plt.show()
```
这段代码中,我们在使用 `reindex` 方法时,将列的顺序改为了 `<1h`, `1-2h`, `2-3h`, `3-4h`, `4-5h`, `>5h`,然后再进行绘图。