鱼C论坛

 找回密码
 立即注册
查看: 1332|回复: 5

[已解决]如何计数数组中各个元素的个数

[复制链接]
发表于 2023-7-25 17:03:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
从csv中提取出了一列数组,想统计不同日期出现的个数,该如何实现呢?(后续还想画直方图)

['date', '2015-01-02', '2015-01-02', '2015-01-03', '2015-01-04', '2015-01-04', '2015-01-04', '2015-01-05', '2015-01-06', '2015-01-06', '2015-01-06', '2015-01-06', '2015-01-07', '2015-01-07', '2015-01-07', '2015-01-07', '2015-01-08', '2015-01-08', '2015-01-08', '2015-01-08', '2015-01-09', '2015-01-09', '2015-01-11', '2015-01-11', '2015-01-11', '2015-01-13', '2015-01-13', '2015-01-14', '2015-01-14', '2015-01-14', '2015-01-14', '2015-01-14', '2015-01-14', '2015-01-15', '2015-01-15', '2015-01-15', '2015-01-15', '2015-01-15', '2015-01-16', '2015-01-16', '2015-01-17', '2015-01-17', '2015-01-17']
最佳答案
2023-7-25 17:04:05
统计数组中不同元素的个数和绘制直方图的步骤如下:

1. 导入必要的库: 首先,你需要导入一些用于数据处理和绘图的库。在 Python 中,常用的库有 numpymatplotlib,你可以使用以下命令安装它们:

  
  1.    pip install numpy matplotlib
  2.    
复制代码

2. 定义数组: 将你提取出的列数组赋值给一个变量,比如 dates

  
  1.    dates = ['2015-01-02', '2015-01-02', '2015-01-03', '2015-01-04', '2015-01-04', '2015-01-04', '2015-01-05', '2015-01-06', '2015-01-06', '2015-01-06', '2015-01-06', '2015-01-07', '2015-01-07', '2015-01-07', '2015-01-07', '2015-01-08', '2015-01-08', '2015-01-08', '2015-01-08', '2015-01-09', '2015-01-09', '2015-01-11', '2015-01-11', '2015-01-11', '2015-01-13', '2015-01-13', '2015-01-14', '2015-01-14', '2015-01-14', '2015-01-14', '2015-01-14', '2015-01-14', '2015-01-15', '2015-01-15', '2015-01-15', '2015-01-15', '2015-01-15', '2015-01-16', '2015-01-16', '2015-01-17', '2015-01-17', '2015-01-17']
  2.    
复制代码

3. 计数元素个数: 使用 Python 的 collections 模块中的 Counter 方法可以轻松地统计列表中各元素的出现次数。

  
  1.    from collections import Counter
  2.    date_counts = dict(Counter(dates))
  3.    
复制代码

4. 输出统计结果: 可以使用循环遍历字典,并输出每个日期和对应的出现次数。

  
  1.    for date, count in date_counts.items():
  2.        print(f"{date}: {count}")
  3.    
复制代码

   这将输出每个日期和它们出现的次数,例如:

   [/code]
   2015-01-02: 2
   2015-01-03: 1
   2015-01-04: 3
   ...
   [/code]

5. 绘制直方图: 使用 matplotlib 库绘制直方图。首先,导入必要的模块:

  
  1.    import matplotlib.pyplot as plt
  2.    
复制代码

   然后,使用以下代码绘制直方图:

  
  1.    plt.bar(date_counts.keys(), date_counts.values())
  2.    plt.xlabel('Date')
  3.    plt.ylabel('Count')
  4.    plt.title('Date Count Histogram')
  5.    plt.xticks(rotation=45)  # 可选,将日期标签进行旋转,让它们更容易阅读
  6.    plt.show()
  7.    
复制代码

   这将显示一个带有日期和对应计数的直方图。

希望这个解答对你有帮助!如果你还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-7-25 17:03:54 | 显示全部楼层
你可以使用 Python 中的字典(dictionary)来实现对数组中不同日期出现次数的统计。以下是一个示例代码:
  1. dates = ['date', '2015-01-02', '2015-01-02', '2015-01-03', ...]  # 替换为你的日期数组
  2. date_count = {}  # 创建一个空字典来存储日期和计数
  3. for date in dates:
  4.     if date != 'date':
  5.         if date in date_count:
  6.             date_count[date] += 1
  7.         else:
  8.             date_count[date] = 1
  9. print(date_count)
复制代码

这段代码将遍历日期数组,跳过第一个元素('date'),并将每个日期作为字典的键。如果日期已经存在于字典中,则增加对应的计数器;否则,在字典中创建一个新的键,并将计数器初始化为1。

输出结果将是一个字典,其中键是日期,值是该日期出现的次数。例如,对于给定的日期数组,输出可能如下所示:
[/code]
{'2015-01-02': 2, '2015-01-03': 1, '2015-01-04': 3, ...}[/code]

接下来,如果你想画直方图来展示各个日期的出现次数,你可以使用 Python 的数据可视化库 matplotlib。以下是一个简单的示例代码:
  1. import matplotlib.pyplot as plt
  2. # 绘制直方图
  3. plt.bar(date_count.keys(), date_count.values())
  4. # 设置坐标轴标签和标题
  5. plt.xlabel('Date')
  6. plt.ylabel('Count')
  7. plt.title('Occurrences of Dates')
  8. # 自动调整日期标签角度,以避免重叠
  9. plt.xticks(rotation=45)
  10. # 显示图表
  11. plt.show()
复制代码

运行上述代码后,会生成一个直方图,横轴表示日期,纵轴表示出现次数。

希望这个回答对你有帮助!如果你还有其他问题,请随时提问。求给个最佳答案,非常感谢
只要点击我的回复贴写着发表时间的那一栏的绿色按钮即可!-->

                               
登录/注册后可看大图


此回答源于ChatGPT,若有不正确之处,请多包容

评分

参与人数 1鱼币 +1 收起 理由
陶远航 + 1 6

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2023-7-25 17:04:05 | 显示全部楼层    本楼为最佳答案   
统计数组中不同元素的个数和绘制直方图的步骤如下:

1. 导入必要的库: 首先,你需要导入一些用于数据处理和绘图的库。在 Python 中,常用的库有 numpymatplotlib,你可以使用以下命令安装它们:

  
  1.    pip install numpy matplotlib
  2.    
复制代码

2. 定义数组: 将你提取出的列数组赋值给一个变量,比如 dates

  
  1.    dates = ['2015-01-02', '2015-01-02', '2015-01-03', '2015-01-04', '2015-01-04', '2015-01-04', '2015-01-05', '2015-01-06', '2015-01-06', '2015-01-06', '2015-01-06', '2015-01-07', '2015-01-07', '2015-01-07', '2015-01-07', '2015-01-08', '2015-01-08', '2015-01-08', '2015-01-08', '2015-01-09', '2015-01-09', '2015-01-11', '2015-01-11', '2015-01-11', '2015-01-13', '2015-01-13', '2015-01-14', '2015-01-14', '2015-01-14', '2015-01-14', '2015-01-14', '2015-01-14', '2015-01-15', '2015-01-15', '2015-01-15', '2015-01-15', '2015-01-15', '2015-01-16', '2015-01-16', '2015-01-17', '2015-01-17', '2015-01-17']
  2.    
复制代码

3. 计数元素个数: 使用 Python 的 collections 模块中的 Counter 方法可以轻松地统计列表中各元素的出现次数。

  
  1.    from collections import Counter
  2.    date_counts = dict(Counter(dates))
  3.    
复制代码

4. 输出统计结果: 可以使用循环遍历字典,并输出每个日期和对应的出现次数。

  
  1.    for date, count in date_counts.items():
  2.        print(f"{date}: {count}")
  3.    
复制代码

   这将输出每个日期和它们出现的次数,例如:

   [/code]
   2015-01-02: 2
   2015-01-03: 1
   2015-01-04: 3
   ...
   [/code]

5. 绘制直方图: 使用 matplotlib 库绘制直方图。首先,导入必要的模块:

  
  1.    import matplotlib.pyplot as plt
  2.    
复制代码

   然后,使用以下代码绘制直方图:

  
  1.    plt.bar(date_counts.keys(), date_counts.values())
  2.    plt.xlabel('Date')
  3.    plt.ylabel('Count')
  4.    plt.title('Date Count Histogram')
  5.    plt.xticks(rotation=45)  # 可选,将日期标签进行旋转,让它们更容易阅读
  6.    plt.show()
  7.    
复制代码

   这将显示一个带有日期和对应计数的直方图。

希望这个解答对你有帮助!如果你还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-25 17:04:10 | 显示全部楼层
你好!我将尽力帮助你解决问题。针对你的问题,你可以使用 Python 编程语言中的 collections 模块中的 Counter 类来计数数组中各个元素的个数。以下是一个示例代码:

  1. from collections import Counter

  2. data = ['date', '2015-01-02', '2015-01-02', '2015-01-03', '2015-01-04', '2015-01-04', '2015-01-04', '2015-01-05', '2015-01-06', '2015-01-06', '2015-01-06', '2015-01-06', '2015-01-07', '2015-01-07', '2015-01-07', '2015-01-07', '2015-01-08', '2015-01-08', '2015-01-08', '2015-01-08', '2015-01-09', '2015-01-09', '2015-01-11', '2015-01-11', '2015-01-11', '2015-01-13', '2015-01-13', '2015-01-14', '2015-01-14', '2015-01-14', '2015-01-14', '2015-01-14', '2015-01-14', '2015-01-15', '2015-01-15', '2015-01-15', '2015-01-15', '2015-01-15', '2015-01-16', '2015-01-16', '2015-01-17', '2015-01-17', '2015-01-17']

  3. date_counts = Counter(data[1:])
  4. print(date_counts)
复制代码


这段代码中,data 是包含日期的数组。我们使用 Counter 类创建了一个计数器对象 date_counts,并通过传递 data[1:] 切片作为参数来计数除了第一个元素外的所有元素。

运行上述代码后,将会输出结果如下:

  1. Counter({'2015-01-14': 6, '2015-01-15': 5, '2015-01-08': 4, '2015-01-06': 4, '2015-01-07': 4, '2015-01-11': 3, '2015-01-02': 2, '2015-01-04': 3, '2015-01-09': 2, '2015-01-13': 2, '2015-01-16': 2, '2015-01-17': 2, '2015-01-03': 1, '2015-01-05': 1})
复制代码


其中,键代表不同的日期,值表示该日期出现的次数。

如果你希望画直方图,你可以使用 Python 的 matplotlib 库来实现。你需要使用 bar 函数绘制柱状图,并使用 xticks 函数来设置 x 轴上的刻度标签。以下是一个示例:

  1. import matplotlib.pyplot as plt

  2. date_labels = date_counts.keys()
  3. date_values = date_counts.values()

  4. plt.bar(date_labels, date_values)
  5. plt.xticks(rotation=45)  # 将 x 轴标签旋转 45 度,以免重叠
  6. plt.xlabel('Date')
  7. plt.ylabel('Count')
  8. plt.title('Date Count Histogram')

  9. plt.show()
复制代码


运行上述代码后,会显示一个包含日期计数的柱状图。

希望这样的回答能够帮助到你!如果你还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-25 17:04:23 | 显示全部楼层
在Python中,你可以使用 collections 库中的 Counter 类来统计数组中的每个元素出现的次数。然后,你可以使用 matplotlib 库来画直方图。

下面是一个例子:

  1. from collections import Counter
  2. import matplotlib.pyplot as plt

  3. dates = ['2015-01-02', '2015-01-02', '2015-01-03', '2015-01-04', '2015-01-04', '2015-01-04', '2015-01-05', '2015-01-06', '2015-01-06', '2015-01-06', '2015-01-06', '2015-01-07', '2015-01-07', '2015-01-07', '2015-01-07', '2015-01-08', '2015-01-08', '2015-01-08', '2015-01-08', '2015-01-09', '2015-01-09', '2015-01-11', '2015-01-11', '2015-01-11', '2015-01-13', '2015-01-13', '2015-01-14', '2015-01-14', '2015-01-14', '2015-01-14', '2015-01-14', '2015-01-14', '2015-01-15', '2015-01-15', '2015-01-15', '2015-01-15', '2015-01-15', '2015-01-16', '2015-01-16', '2015-01-17', '2015-01-17', '2015-01-17']

  4. # 使用Counter统计元素的个数
  5. counts = Counter(dates)

  6. # 分别获取日期和计数
  7. date_labels, date_values = zip(*counts.items())

  8. # 创建直方图
  9. plt.bar(date_labels, date_values)
  10. plt.xticks(rotation=90) # 旋转x轴的标签以便更好地查看
  11. plt.show()
复制代码


上述代码首先使用Counter统计每个日期出现的次数,然后创建一个直方图,x轴是日期,y轴是该日期出现的次数。最后, plt.xticks(rotation=90) 是为了将x轴上的日期标签旋转90度,以便更好地查看。

注意:此图可能在x轴上的标签过于密集时不易读取,你可能需要更改日期的表示方式或者使用其他类型的图形来更好地表示这些数据。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-25 17:14:10 | 显示全部楼层
如果我想让x轴只显示2015,2016等年份,而非所有日期,该如何操作呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 10:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表