catalpa-bungei 发表于 2023-7-25 17:03:34

如何计数数组中各个元素的个数

从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']

学习编程中的Ben 发表于 2023-7-25 17:03:54

你可以使用 Python 中的字典(dictionary)来实现对数组中不同日期出现次数的统计。以下是一个示例代码:
dates = ['date', '2015-01-02', '2015-01-02', '2015-01-03', ...]# 替换为你的日期数组

date_count = {}# 创建一个空字典来存储日期和计数

for date in dates:
    if date != 'date':
      if date in date_count:
            date_count += 1
      else:
            date_count = 1

print(date_count)

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

输出结果将是一个字典,其中键是日期,值是该日期出现的次数。例如,对于给定的日期数组,输出可能如下所示:

{'2015-01-02': 2, '2015-01-03': 1, '2015-01-04': 3, ...}

接下来,如果你想画直方图来展示各个日期的出现次数,你可以使用 Python 的数据可视化库 matplotlib。以下是一个简单的示例代码:
import matplotlib.pyplot as plt

# 绘制直方图
plt.bar(date_count.keys(), date_count.values())

# 设置坐标轴标签和标题
plt.xlabel('Date')
plt.ylabel('Count')
plt.title('Occurrences of Dates')

# 自动调整日期标签角度,以避免重叠
plt.xticks(rotation=45)

# 显示图表
plt.show()

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

希望这个回答对你有帮助!如果你还有其他问题,请随时提问。求给个最佳答案,非常感谢{:10_254:}
只要点击我的回复贴写着发表时间的那一栏的绿色按钮即可!-->https://i.imgtg.com/2023/07/24/Oh0mQB.png

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

Mike_python小 发表于 2023-7-25 17:04:05

统计数组中不同元素的个数和绘制直方图的步骤如下:

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

   
   pip install numpy matplotlib
   

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

   
   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']
   

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

   
   from collections import Counter

   date_counts = dict(Counter(dates))
   

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

   
   for date, count in date_counts.items():
       print(f"{date}: {count}")
   

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

   
   2015-01-02: 2
   2015-01-03: 1
   2015-01-04: 3
   ...
   

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

   
   import matplotlib.pyplot as plt
   

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

   
   plt.bar(date_counts.keys(), date_counts.values())
   plt.xlabel('Date')
   plt.ylabel('Count')
   plt.title('Date Count Histogram')
   plt.xticks(rotation=45)# 可选,将日期标签进行旋转,让它们更容易阅读
   plt.show()
   

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

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

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

陶远航 发表于 2023-7-25 17:04:10

你好!我将尽力帮助你解决问题。针对你的问题,你可以使用 Python 编程语言中的 collections 模块中的 Counter 类来计数数组中各个元素的个数。以下是一个示例代码:

from collections import Counter

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']

date_counts = Counter(data)
print(date_counts)


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

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

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 轴上的刻度标签。以下是一个示例:

import matplotlib.pyplot as plt

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

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

plt.show()


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

希望这样的回答能够帮助到你!如果你还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案

isdkz 发表于 2023-7-25 17:04:23

在Python中,你可以使用 collections 库中的 Counter 类来统计数组中的每个元素出现的次数。然后,你可以使用 matplotlib 库来画直方图。

下面是一个例子:

from collections import Counter
import matplotlib.pyplot as plt

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']

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

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

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


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

注意:此图可能在x轴上的标签过于密集时不易读取,你可能需要更改日期的表示方式或者使用其他类型的图形来更好地表示这些数据。

catalpa-bungei 发表于 2023-7-25 17:14:10

如果我想让x轴只显示2015,2016等年份,而非所有日期,该如何操作呢?
页: [1]
查看完整版本: 如何计数数组中各个元素的个数