Файлы LAS - Python
Я почти уверен, что это очень простой вопрос о файлах LAS, но я не совсем знал, как это сделать в Google. Для контекста я пытаюсь создать сюжет с учетом информации в файле LAS.
import lasio as ls
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
well = ls.read(r'1051325649.las')
df = well.df()
fig = plt.subplots(figsize=(10,10))
#Set up the plot axes
ax1 = plt.subplot2grid((1,3), (0,0), rowspan=1, colspan = 1)
ax2 = plt.subplot2grid((1,3), (0,1), rowspan=1, colspan = 1)
ax3 = plt.subplot2grid((1,3), (0,2), rowspan=1, colspan = 1)
ax1.plot("GR", "DEPT", data = df, color = "green") # Call the data from the well dataframe
ax1.set_title("Gamma") # Assign a track title
ax1.set_xlim(0, 200) # Change the limits for the curve being plotted
ax1.set_ylim(400, 1000) # Set the depth range
ax1.grid() # Display the grid
Файл LAS выглядит примерно так, где я хочу создать график, где крайний левый столбец «DEPT» должен быть осью X. Однако столбец «DEPT» или столбец глубины не может быть преобразован в формат, позволяющий мне построить его. ** Примечание: справа нет столбца GR, которого нет на этом рисунке, так что не беспокойтесь. Любые советы очень помогут.
2 ответа
Короткий ответ:
plt.plot
ожидает, что оба
"GR"
а также
"DEPT"
являются столбцами в, однако последние (
DEPT
) не столбец, это индекс. Вы можете решить эту проблему, преобразовав индекс в
df
в столбец:
df2 = df.reset_index()
ax1.plot("GR", "DEPT", data = df2, color = "green")
При чтении
.las
файлы с использованием
lasio
библиотеки и преобразовать их в
pandas
dataframe, он автоматически устанавливается в качестве индекса для dataframe.
Есть два решения этой проблемы:
- Используйте данные как есть:
import matplotlib.pyplot as plt
import lasio
well = lasio.read('filename.las')
well_df = well.df()
plt.plot(well_df.GR, well_df.index)
А также
well_df.index
будут значения.
- Сбросьте индекс и используйте
DEPT
как столбец
import matplotlib.pyplot as plt
import lasio
well = lasio.read('filename.las')
well_df = well.df()
well_df = well_df.reset_index()
plt.plot(well_df.GR, well_df.DEPT)