python 读取csv文件并输出柱状图(以iris数据集为例)

被半自动的直方图法气晕

 

 

import pandas as pd
import numpy as np
import matplotlib.pylab as plt

data = pd.read_csv("iris.csv")

# 获取所有列,并存入一个数组中

ori_data = np.array(data)

#存储三种类别的list
list1 = []
list2 = []
list3 = []
max_num = 40
input_num = [0, 0, 0]
input_num1 = 0
data_num = 150

for i in range(data_num):
    if (ori_data[i][5] == 'setosa') & (input_num[0] < max_num):
        list1.append(ori_data[i])
        input_num[0] = input_num[0] + 1
    if (ori_data[i][5] == 'versicolor') & (input_num[1] < max_num):
        list2.append(ori_data[i])
        input_num[1] = input_num[1] + 1
    if (ori_data[i][5] == 'virginica') & (input_num[2] < max_num):
        list3.append(ori_data[i])
        input_num[2] = input_num[2] + 1

#提取iris三个种类的数据集为四个部分并画图
def mission1(list,class_name):
    data1 = [[], [], [], []]
    #数据名
    data_name = ["Sepal.Length","Sepal.Width","Petal.Length","Petal.Width"]
    #提取4种数据
    for i in range(len(list)):
        for j in range(4):
            data1[j].append(list[i][j+1])#数据特征

    # arange(a,b,c)确定直方图x轴的范围及间距,a为最小值,b为最大值,c为间距
    # 用plt.hist(a,b)绘制,a为数据,b为直方图的特性
    for i in range(4):
        print("序列", i)
        plt.subplot(2, 2, i+1)
        data = data1[i]
        # print(data)
        # 计算bin
        a = int(max(data)*10/10)
        b = int(min(data)*10/10)
        c = a - b
        bin = c + 1

        #直接输出每个区间的值
        num_count = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] #......代表统计范围是0-9
        for j in range(len(data)):
            flag = 0
            # print("输入:",data[j], " 输出:", int(data[j]*10/10))
            if int(data[j]*10/10) == b + flag:
                num_count[b + flag] = num_count[b + flag] + 1
            if int(data[j]*10/10) != b + flag:
                for h in range(bin):
                    flag = flag + 1
                    if int(data[j]*10/10) == b + flag:
                        num_count[b + flag] = num_count[b + flag] + 1
                        break

        #输出
        x = []
        y = []
        for s in range(len(num_count)):
            if num_count[s] != 0:
                # print("区间: ", s, " 数量: ", num_count[s])
                x.append(s)
                y.append(num_count[s])
        # print('max = ', max(data), 'min = ', min(data), 'minus = ', max(data) - min(data),'a = ', a, 'b = ', b, 'c = ', c, ' bin = ', bin)
        plt.bar(x,y,align='center',color="c",tick_label=x)
        # plt.hist(data, bin, (int(min(data)*10/10), int(max(data)*10/10)),rwidth = 0.6)
        plt.xlabel('x')
        plt.ylabel('num')
        
        for X,Y in zip(x,y):
            plt.text(X+0.05,Y+0.05,'%d' %Y, ha='center',va='bottom')

        # plt.xticks(np.arange(int(min(data)*10/10), int(max(data)*10/10), 1))
        plt.yticks(np.arange(0, 40, 2)) 
        title = str(class_name + ' ' + data_name[i])
        plt.title(title)

        #计算概率估计表
        for t in range(len(x)):
            result1 = y[t] / max_num
            print("范围", x[t], "Na/N", result1)


    plt.show()

mission1(list1,'setosa')
mission1(list2,'versicolor')
mission1(list3,'virginica')

 

  • 0
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Python中的pandas库来读取csv文件,并使用matplotlib库来绘制柱状图。 具体步骤如下: 1. 导入pandas和matplotlib库: ``` import pandas as pd import matplotlib.pyplot as plt ``` 2. 使用pandas的read_csv函数读取csv文件: ``` data = pd.read_csv('filename.csv') ``` 3. 提取需要绘制柱状图数据列: ``` x = data['column1'] y = data['column2'] ``` 4. 使用matplotlib的bar函数绘制柱状图: ``` plt.bar(x, y) plt.show() ``` 其中,x和y分别为柱状图的横坐标和纵坐标数据列,plt.bar函数用于绘制柱状图,plt.show函数用于显示图形。 注意:在使用matplotlib绘图时,需要先调用plt.show()函数才能显示图形。 ### 回答2: Python是一种流行的编程语言,它可以轻松读取和处理文本文件。在本文中,我们将介绍如何使用Python读取CSV文件,将其转换为数据框,并使用matplotlib库画柱状图CSV文件是一种常见的文件格式,它通常以逗号分隔变量(Comma-separated values)的方式存储数据。我们可以使用Pandas库读取CSV文件并将其转换为数据框,然后使用matplotlib库画图。以下是具体步骤: 1.导入必要的库 在Python里,我们需要加载必要的库来处理CSV文件和绘制图表。我们需要安装pandas和matplotlib库。 ```python import pandas as pd import matplotlib.pyplot as plt ``` 2.读取csv文件 使用Pandas库读取文件,并将其转换为数据框。我们可以使用read_csv()来读取CSV文件,如下所示: ```python df=pd.read_csv("test.csv") ``` 3.查看数据框 将CSV文件转换为数据框之后,我们可以使用 head() 来查看前几行数据。 ```python df.head() ``` 4.绘制柱状图 使用matplotlib库画柱状图。我们可以选择不同的样式和颜色,以自定义图表的外观。以下是一个简单的例子: ```python plt.bar(df['name'], df['value']) plt.title('柱状图') plt.xlabel('名称') plt.ylabel('数值') plt.show() ``` 在这个例子中,我们使用 bar() 函数来绘制柱状图。我们将数据框的 name 列作为 x 轴,将 value 列作为 y 轴。然后添加图表标题,x轴和y轴标签,并使用 show() 函数显示图表。 综上所述,通过以上步骤,我们可以使用Python读取和处理CSV文件,并以柱状图的形式展示数据。这种数据可视化方法可以帮助我们更好地理解数据,并做出更明智的决策。 ### 回答3: Python是一种功能强大的编程语言,可以用来处理数据和绘制图表。如果要读取CSV文件并绘制柱状图,可以使用Python的pandas和matplotlib库。 首先,需要安装pandas和matplotlib库。可以使用pip命令来安装: ``` pip install pandas pip install matplotlib ``` 接下来,导入这两个库: ```python import pandas as pd import matplotlib.pyplot as plt ``` 读取CSV文件可以使用pandas库的read_csv()函数。例如,可以将CSV文件读取到一个DataFrame对象中: ```python df = pd.read_csv('data.csv') ``` 在这个例子中,CSV文件名为data.csv。如果CSV文件位于不同的目录中,需要提供完整路径。 现在,可以使用DataFrame对象中的数据来绘制柱状图。例如,将某个列的值作为x轴,将另一个列的值作为y轴: ```python plt.bar(df['country'], df['population']) plt.show() ``` 在这个例子中,假设数据包含“country”和“population”两个列,分别表示不同国家的人口数量。使用plt.bar()函数绘制柱状图,并使用plt.show()函数显示图表。 如果需要设置柱状图的颜色、标签和其他属性,可以提供额外的参数。例如,下面的代码将设置柱状图的颜色为红色,标签为“Population”,并添加网格线: ```python plt.bar(df['country'], df['population'], color='red', label='Population') plt.grid(True) plt.legend() plt.show() ``` 可以根据需要自定义柱状图的样式和属性。 绘制柱状图Python数据分析和可视化的常见任务之一。通过使用pandas和matplotlib库,可以轻松地读取CSV文件并绘制高质量的柱状图
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值