Phân tích sâu hơn về trạng thái bảo trì của merge-convert-csv-to-json dựa trên nhịp phiên bản npm đã phát hành, hoạt động của kho lưu trữ và các điểm dữ liệu khác đã xác định rằng việc bảo trì của nó là Không hoạt động
Một tín hiệu bảo trì dự án quan trọng cần xem xét để hợp nhất-chuyển đổi-csv-to-json là nó không thấy bất kỳ phiên bản mới nào được phát hành cho npm trong 12 tháng qua và có thể được coi là một dự án đã ngừng hoặc nhận được thấp
Là một dấu hiệu lành mạnh cho việc bảo trì dự án đang diễn ra, chúng tôi nhận thấy rằng kho lưu trữ GitHub có ít nhất 1 yêu cầu kéo hoặc vấn đề được cộng đồng tương tác
Nhưng hãy tưởng tượng nếu bạn có hơn 100 tệp để nối — bạn có sẵn sàng thực hiện thủ công không?
Nếu tất cả các tệp có cùng cấu trúc bảng [cùng tiêu đề & số cột], hãy để tập lệnh Python nhỏ này thực hiện công việc
Bước 1. Nhập gói và đặt thư mục làm việc
Thay đổi “/mydir” thành thư mục làm việc mong muốn của bạn
import os
import glob
import pandas as pd
os.chdir["/mydir"]
Bước 2. Sử dụng hình cầu để khớp với mẫu 'csv'
Khớp mẫu [‘csv’] và lưu danh sách tên tệp trong biến ‘all_filenames’. Bạn có thể xem liên kết này để tìm hiểu thêm về đối sánh biểu thức chính quy
extension = 'csv'
all_filenames = [i for i in glob.glob['*.{}'.format[extension]]]
Bước 3. Kết hợp tất cả các tệp trong danh sách và xuất dưới dạng CSV
Sử dụng gấu trúc để nối tất cả các tệp trong danh sách và xuất dưới dạng CSV. Tệp đầu ra có tên là “combined_csv. csv” nằm trong thư mục làm việc của bạn
#combine all files in the list
combined_csv = pd.concat[[pd.read_csv[f] for f in all_filenames ]]
#export to csv
combined_csv.to_csv[ "combined_csv.csv", index=False, encoding='utf-8-sig']
mã hóa = 'utf-8-sig' được thêm vào để khắc phục sự cố khi xuất các ngôn ngữ 'Không phải tiếng Anh'
Và…thế là xong
Bài viết này được lấy cảm hứng từ vấn đề thực tế hàng ngày của tôi và cấu trúc mã hóa là từ một cuộc thảo luận trên stackoverflow. Tập lệnh hoàn chỉnh cho hướng dẫn này được ghi lại trên GitHub
Cảm ơn bạn đã đọc. Vui lòng dùng thử, vui chơi và cho tôi biết phản hồi của bạn
Nếu bạn thích những gì tôi đã làm, hãy cân nhắc theo dõi tôi trên GitHub, Medium và Twitter. Đảm bảo đánh dấu sao trên GitHub. P
QUẢNG CÁO
QUẢNG CÁO
Thích tự động hóa công việc thường ngày, cựu kỹ sư mỏ dầu. https. // ekapope. github. io/
Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn
Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu
Nút. js thật tuyệt vời vì nó là một hệ sinh thái. Càng tuyệt vời hơn khi sử dụng chung với một số thư viện phổ biến như D3. js và Lodash
Mục đích
Tôi đã phải xử lý trước một loạt tệp csv để làm việc với một tệp tập dữ liệu cho thuận tiện. Nút. js hiện là nền tảng được lựa chọn cho loại nhiệm vụ này và tôi không thể hài lòng hơn về nó
Quá trình
Dưới đây là hướng dẫn về kịch bản nhỏ này giúp tôi tiết kiệm rất nhiều thời gian
Nhập khẩu vũ khí của chúng tôi
const d3 = require['d3']
const fs = require['fs']
const _ = require['lodash']
Đọc một thư mục để lấy danh sách tệp gọi một hàm cho từng tệp
var files = fs.readdirSync[`${__dirname}/data`]
_.each[files, filename => process[filename]]
Đọc nội dung csv và phân tích nó bằng D3. js
var process = name => {
var raw = fs.readFileSync[`data/${name}`, 'utf8']
var csv = d3.csvParse[raw]
}
Sắp xếp một số giá trị trước khi cam kết với mảng cuối cùng
var process = name => {
...
var parse = d3.timeParse['%m/%d/%y']
csv.forEach[d => {
d.timestamp = parse[d.Dates]
}]
}
Tạo một mảng duy nhất với tất cả các tệp csv được hợp nhất với nhau [cảm ơn Lodash]
var db = []
var process = name => {
...
var newdb = _.unionBy[db, csv, 'Dates']
db = newdb
}
Lưu tập dữ liệu cuối cùng dưới dạng tệp JSON
________số 8_______
Toàn bộ tập lệnh tạo một tệp json với tất cả các mục nhập. Một điểm khởi đầu hoàn hảo cho một phiên khám phá với D3. js