python csv柱状图统计


import os
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 获取当前工作目录
current_directory = os.getcwd()

# 构建文件路径
file_name = 'cliff.csv'
file_path = os.path.join(current_directory, file_name)

# 从CSV文件中读取数据
df = pd.read_csv(file_path)

# 假设CSV文件中有一列名为 'data_column',你可以根据实际情况修改列名
data_column = 'data'  # 替换为你的列名

# 获取数据列
data = df[data_column]

# 使用NumPy计算数据的频次
unique_values, counts = np.unique(data, return_counts=True)

# 画出柱状图
plt.bar(unique_values, counts, color='blue', alpha=0.7)

# 添加标题和标签
plt.title('频次柱状图示例')
plt.xlabel('数值')
plt.ylabel('频次')

# 显示图形
plt.show()

### 如何使用 Python Pandas 读取 CSV 文件并用 Matplotlib 绘制直方图 要实现通过 Python 的 `Pandas` 库读取 CSV 文件,并借助 `Matplotlib` 库绘制直方图,可以按照以下方法完成。 #### 方法一:基于单列数据绘制直方图 以下是完整的代码示例: ```python import os import matplotlib.pyplot as plt import pandas as pd def draw_histogram(csv_file, column_index=1, bins=None): """ 使用 Pandas 和 Matplotlib 绘制指定 CSV 列的直方图。 参数: csv_file (str): CSV 文件路径。 column_index (int): 要绘制直方图的目标列索引,默认为第二列(即索引为1)。 bins (int or None): 历史柱状图的数量。如果未提供,则自动计算。 """ # 加载 CSV 数据到 DataFrame 中 reviews = pd.read_csv(csv_file) # 获取目标列的数据 target_column_data = reviews.iloc[:, column_index] # 创建直方图 plt.hist(target_column_data, bins=bins) plt.title('Histogram of Column Data') plt.xlabel('Value') plt.ylabel('Frequency') # 显示图表并将图片保存至同一目录下 plt.show() output_image_path = os.path.join(os.path.dirname(csv_file), 'histogram.png') plt.savefig(output_image_path) def main(): csv_file = r'/path/to/your/file.csv' draw_histogram(csv_file, column_index=1, bins=20) if __name__ == '__main__': main() ``` 上述代码实现了从 CSV 文件中提取特定列的数据,并将其绘制成直方图[^1]。其中,函数参数允许灵活调整所选列以及直方图中的区间数量。 --- #### 方法二:动态设置直方图区间的数量 当不确定最佳区间数时,可以通过统计学方法自动生成合理的区间数目。例如,Sturges 公式可用于估算合适的区间数 $k$: $$ k = \lceil\log_2(n)\rceil + 1 $$ 这里 $n$ 是样本大小。此逻辑可嵌入代码中以增强自动化程度[^4]。 ```python import math def calculate_bins(data_length): """ 计算推荐的直方图区间数 """ return int(math.ceil(math.log2(data_length)) + 1) bins_number = calculate_bins(len(reviews)) plt.hist(reviews[header[column_index]], bins=bins_number) ``` 这种方法能够更科学地决定直方图分区,从而提升可视化效果的质量。 --- #### 注意事项 - 如果 CSV 文件较大或者存在缺失值,在加载前应考虑预处理步骤来优化性能和准确性。 - 对于非数值型字段尝试作图可能会引发错误;因此建议先验证待分析列的内容类型是否适合用于构建直方图[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值