python nc文件数据转csv 或 excel
时间: 2025-03-08 18:00:53 浏览: 86
### 将 NetCDF 文件数据导出为 CSV 或 Excel 文件
为了实现这一目标,可以采用 Python 中的 `netCDF4` 和 `pandas` 库来处理 NC 文件并将其转换成所需的格式。以下是具体方法:
#### 使用 Pandas 导出为 CSV 文件
通过读取特定区域内的经纬度范围并将这些数据写入 CSV 文件中。
```python
import netCDF4 as nc
import pandas as pd
from pathlib import Path
def extract_and_save_to_csv(input_file, output_dir):
dataset = nc.Dataset(input_file)
latitudes = dataset.variables['latitude'][:]
longitudes = dataset.variables['longitude'][:]
# 定义所需地理坐标区间
min_lat, max_lat = 23, 40
min_lon, max_lon = 118, 131
# 获取符合条件的索引位置
lat_indices = (latitudes >= min_lat) & (latitudes <= max_lat)
lon_indices = (longitudes >= min_lon) & (longitudes <= max_lon)
selected_lats = latitudes[lat_indices]
selected_lons = longitudes[lon_indices]
data_dict = {}
for var_name in dataset.variables.keys():
if var_name not in ['time', 'latitude', 'longitude']:
variable_data = dataset.variables[var_name][:]
sliced_var_data = variable_data[:, lat_indices, :][:, :, lon_indices].flatten()
data_dict[f"{var_name}"] = sliced_var_data
df = pd.DataFrame(data=data_dict)
csv_output_path = Path(output_dir)/Path(input_file).stem.with_suffix('.csv')
df.to_csv(csv_output_path, index=False)
path = 'F:/data/nc/wave/2018-2021/product'
file_list = [f'{path}/{item}' for item in os.listdir(path)]
for file in file_list:
try:
extract_and_save_to_csv(file, path)
except Exception as e:
print(f"{file} 异常:{e}")
```
此脚本会遍历指定路径下的所有 .nc 文件,并提取位于给定纬度和经度范围内的变量值,最后将它们存储在一个新的 CSV 文件里[^2]。
#### 转换为 Excel 文件
如果希望进一步将上述得到的 DataFrame 对象保存至 Excel 表格,则只需调用 `.to_excel()` 方法代替 `.to_csv()`. 下面是一个简单的例子展示如何操作:
```python
excel_output_path = Path(output_dir)/Path(input_file).stem.with_suffix('.xlsx')
df.to_excel(excel_output_path, sheet_name='Sheet1', index=False)
```
这样就可以轻松地把 NetCDF 数据转化为易于查看编辑的形式了。
阅读全文
相关推荐















