当前位置: 首页 > 知识库问答 >
问题:

如何读取多个csv文件并绘制直方图

慕容成和
2023-03-14

我已经问了同样的问题,看起来不清楚。因此,让我以不同的方式问它。我有四个.csv个名为I_earthquake2016.csv I_earthquake2017.csv I_earthquake2018.csv I_earthquake2019.csv(不同年份的地震数据)它们都有相同的列,只是行数不同。我做了一些代码来读取其中一个文件,并制作直方图以查看每个月发生多少次地震。

问题:

    < li >我不知道如何编写代码来读取所有文件并为每个文件绘制相同的直方图(使用循环) < li >我不知道如何制作直方图来显示每年(2016-2019年之间)的地震数量

有人能教我怎么做吗?谢谢你。

import os
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

data = pd.read_csv('I_earthquake2017.csv')
print(data[:1])

输出线路1:

time  latitude  longitude  depth  mag

0 2017-12-30 20:53:24.700000+00:00   29.4481    51.9793   10.0  4.9



data['time']=pd.to_datetime(data['time'])
data['MONTH']=data['time'].dt.month
data['YEAR']=data['time'].dt.year
print(data[:1])

输出线1

time  latitude  longitude  depth  mag  MONTH  YEAR

0 2017-12-30 20:53:24.700000+00:00   29.4481    51.9793   10.0  4.9   12   2017




plt.hist(x=[data.MONTH],bins=12,alpha=0.5)
plt.show()

共有1个答案

汲利
2023-03-14

编辑:在csv_list的赋值中包含了一个排序,以正确的顺序重新排列支线剧情

所以我模拟了你的数据(对于那些感兴趣的人来说,模拟代码是这个答案的最后一部分)

代码的必要导入

#!/usr/bin/env python3
import calendar
from pathlib import Path
import matplotlib.pyplot as plt
import pandas as pd

有库glb,但是我更喜欢glb的内置路径库实现。两者都允许您搜索正则表达式模式(如*. csv),请参阅下面引用的文档:

在由该路径表示的目录中对给定的相对模式进行Glob,产生所有匹配的文件(任何类型)

下面的代码给出了熊猫数据帧的列表。参数< code > parse _ dates =[' time ']自动将列时间转换为日期时间。所以不再需要< code>pd.to_datetime()了。您需要修改< code>base_dir中的基本目录,以匹配您电脑上的正确目录。

# Read in mulitple CSV Files
base_dir = Path("C:/Test/Earthquake-Data")
csv_list = sorted(list(base_dir.glob("*.csv")))
df_list = [pd.read_csv(file, index_col=0,parse_dates=['time']) for file in csv_list]

您可以使用< code>plt.subplots()创建一个2 x 2子图。在下面的代码中,我使用< code>zip(df_list,fig.get_axes())遍历数据帧列表和轴列表,并将它们解包为变量< code>df和< code>ax中的结果数组*(df,axes)。在循环中,我使用时间列上的矢量化< code>.dt.month来创建直方图,并更改一些外观参数,即:

  1. 设置为年份 title=str(df['time'].dt.year[0]) 的子图的标题
  2. 将 x 轴刻度上的标签设置为缩写的月份名称(存储list(calendar.month_abbr[1:])中)。请注意,我在答案(上图)的第一部分中导入了日历
  3. 旋转 x 标签(缩写为月份)以提高可读性

代码:

fig, ax = plt.subplots(2,2)
for df, ax in zip(df_list,fig.get_axes()):
    df['time'].dt.month.plot(kind="hist",ax=ax,bins=12,title=str(df['time'].dt.year[0]))
    ax.set_xticks(range(1,13))
    ax.set_xticklabels(list(calendar.month_abbr[1:]))
    # Rotate the xticks for increased readability
    for tick in ax.get_xticklabels():
        tick.set_rotation(45)
fig.tight_layout()
plt.show()
#!/usr/bin/env python3
import numpy as np
import pandas as pd
from my_utils.advDateTime import random_datetimes
from pathlib import Path

year_range = range(2016,2020)
time = [random_datetimes(pd.to_datetime(f"1/1/{year}"), pd.to_datetime(f"1/1/{year + 1}"), n=100) \
                for year in year_range]
lattitude = [np.random.randint(0,100,100) for i in range(4)]
data = {'Lattitude': lattitude[0],'time':time[0]}
list_dfs = [pd.DataFrame({'Lattitude': data,'time':y}).sort_values("time").reset_index(drop=True) for data,y in zip(lattitude,time)]

# # Export to CSV
base_dir = Path("C:/Test/Earthquake-Data")
[df.to_csv(base_dir/f"I_earthquake{year}.csv") for df,year in zip(list_dfs,year_range)]
 类似资料:
  • 本文向大家介绍python 读取目录下csv文件并绘制曲线v111的方法,包括了python 读取目录下csv文件并绘制曲线v111的方法的使用技巧和注意事项,需要的朋友参考一下 实例如下: 以上这篇python 读取目录下csv文件并绘制曲线v111的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 我正在学习python,而我一直坚持的是基于FLT列绘制一个直方图来指示每个过滤器。我有这个数据框: 我的目标是绘制FLT列,但要指示不同的过滤器:g、i、r和z。通过搜索如何绘制直方图,我可以根据MAG(幅值)绘制基本的直方图。理想情况下,我想要的是4种不同的颜色来表示不同的过滤器。我知道该图将有重叠的磁过滤器,但我同意它,因为我需要一个视觉,我可以放大,如果我有必要。 下面的代码是我现在拥有的

  • 本文向大家介绍java读取wav文件(波形文件)并绘制波形图的方法,包括了java读取wav文件(波形文件)并绘制波形图的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java读取wav文件(波形文件)并绘制波形图的方法。分享给大家供大家参考。具体如下: 因为最近有不少网友询问我波形文件读写方面的问题,出于让大家更方便以及让代码能够得到更好的改进,我将这部分(波形文件的读写)代码开源

  • 我想让我的Jmeter从一个位置读取多个csv文件,比如C:\Jmeter\file。 当前,如果我在csv数据集配置下的'filename'中提供特定的csv文件名,Jmeter会识别该文件并执行我的脚本。 我不想对文件名进行硬编码,我想让jmeter从该位置自动读取。 我已经编写了BeenShell预处理器(因为我找不到任何简单的解决方案),这个程序从位置读取所有csv文件列表,并将它们存储在

  • /tmp/data/myfile1.csv,/tmp/data/myfile2.csv,/tmp/data.myfile3.csv,/tmp/datamyfile4.csv 我希望将这些文件读入Spark DataFrame或RDD,并且希望每个文件都是DataFrame的一个解析。我怎么能这么做?

  • 本文向大家介绍php读取csv文件并输出的方法,包括了php读取csv文件并输出的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php读取csv文件并输出的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的php程序设计有所帮助。