python - 迭代数据框仅返回列标题

标签 python pandas matplotlib dataframe plot

我正在尝试从包含地震数据的 csv 中提取纬度、经度、震级和时间,以便将它们绘制到 map 中。

我当前提取数据的代码是:

import pandas as pd

csv_path = 'https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_hour.csv'
filename = pd.read_csv(csv_path, names = ['time','latitude','longitude','mag'])
lats, lons = [], []
magnitudes = []
timestrings = []

for row in filename:
    print (row)
    lats.append(row[1])
    lons.append(row[2])
    magnitudes.append(row[2])
    timestrings.append(row[0])

# Printing this to check if the values are correctly imported
# This is, instead, printing the second letter of each word
print('lats', lats[0:5])
print('lons', lons[0:5])

但我的输出是:

time
latitude
longitude
mag
lats ['i', 'a', 'o', 'a']
lons ['m', 't', 'n', 'g']

如果这个问题之前已经得到解答,我很抱歉,我试图查找它,但我没有设法得到我在代码中找到的答案。

最佳答案

您有一个 pandas 数据框,而不是一个文件。对数据帧的迭代可以提供系列的标题:

>>> import pandas as pd
>>> filename = pd.read_csv('https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_hour.csv', names = ['time','latitude','longitude','mag'])
>>> list(filename)
['time', 'latitude', 'longitude', 'mag']

这些名称是您传递到 read_csv 调用中的名称,但它们不是过滤器。我在这里根本不会使用名称,而是让 Pandas 找出有哪些列,然后从这些列中进行选择:

>>> df = pd.read_csv('https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_hour.csv')
>>> df.time
0    2017-09-12T22:13:27.650Z
Name: time, dtype: object
>>> df.latitude
0    58.0241
Name: latitude, dtype: float64
>>> df.longitude
0   -32.3543
Name: longitude, dtype: float64
>>> df.mag
0    4.8
Name: mag, dtype: float64

我使用了更常见的 df 名称来反射(reflect)这是一个数据帧。

只有一行,因此您可以通过将每个系列转换为列表并生成单个值来获取数据:

df = pd.read_csv('https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_hour.csv')
time = df.time.tolist()
lats = df.latitude.tolist()
longs = df.longitude.tolist()
magnitudes = df.mag.tolist()

但是,如果您想绘制数据,您可以直接从数据框中执行此操作,而无需手动提取列表。请参阅Pandas Visualisation .

关于python - 迭代数据框仅返回列标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46186352/

相关文章:

python - Pandas 根据同一数据框中的另一个系列拆分一个系列

python - 向量化前瞻性函数 pandas 数据框

python - matplotlib 2.0.0 的默认样式名称是什么?

python - Matplotlib - 匹配轴单位长度(分辨率)

python - 在 numpy 数组中查找最常见的子数组

python - Python 子序列运算符如何绕过索引错误?

python - 任何维度的无限体积的交集

python - Python中的产量中断

python - PDF 到 Pandas 数据框

python - 多索引 Seaborn 线图