Làm thế nào tôi có thể tìm thấy cột trung bình trong cơ sở dữ liệu?


8

Tôi có dữ liệu về thời gian xây dựng nhà ở trong khu vực phổ biến. Tôi đã chuyển dữ liệu này đến các khu vực nghiên cứu của mình và muốn xác định thời gian xây dựng trung bình cho từng khu vực nghiên cứu. Vấn đề duy nhất là thông tin của các cột là số lượng nhà ở và tôi không muốn trung bình của các cột này, nhưng tiêu đề của cột để điền vào hàng trong một trường mới (hoặc một cái gì đó khác chỉ ra nó, tốt nhất là khoảng thời gian trong văn bản định dạng, nhưng nó không phải là kết thúc của thế giới nếu nó chỉ là một con số biểu thị thời kỳ).

Tôi đang đính kèm một hình ảnh của bảng thuộc tính với các trường có liên quan được tô sáng. Có một trường MEDIAN nhưng dữ liệu tôi đang sử dụng được tạo bởi người khác và được ghi lại kém, vì vậy tôi không chắc chắn về việc tính toán đã được tiến hành hay chưa.

(Bảy cột biểu thị bảy khoảng thời gian không chồng lấp được sắp xếp theo thứ tự thời gian. Trường [Median] xuất hiện để lập chỉ mục khoảng thời gian mà tổng công trình hoàn thành một nửa; nghĩa là ghi lại thời gian trung bình. )

Ảnh chụp màn hình


1
Bạn đang hỏi tên (hoặc chỉ mục) của trường trong đó giá trị trung bình xảy ra? (Đó rõ ràng không phải là giá trị [Trung bình] hiện tại.) Hoặc có lẽ bạn đang hỏi tên (hoặc chỉ mục) của khoảng thời gian mà nửa đầu của tất cả các công trình đã gặp phải? Ví dụ, trong hàng 1, tổng số xây dựng vào cuối các giai đoạn đã đi 45, 180, 485, 1495, 1995, 2130, 2130. Trung vị của 2130/2 = 1065 xảy ra trong giai đoạn thứ tư (và, chắc chắn, [Median ] = 4). Điều đó thường không được gọi là "trung vị", nhưng nó có vẻ phù hợp với dữ liệu hiện tại.
whuber

@whuber, tôi chỉ hoang tưởng rằng nó không chính xác, bởi vì người đàn ông biên soạn nó ở Vancouver và tôi không thể hỏi anh ta hoàn toàn và anh ta đã không ghi lại bất cứ điều gì trong siêu dữ liệu.
Emily

Tôi vẫn không biết "cột trung bình" nghĩa là gì - ai đó có thể viết lại tiêu đề và câu hỏi không?
blah238

1
@blah Thuật ngữ này thực sự chính xác, như được giải thích ở phần đầu câu trả lời của tôi và được làm rõ thêm trong một bình luận cho câu trả lời của Nathanus. Để trả lời yêu cầu của bạn, tôi đã thêm một đoạn vào câu hỏi.
whuber

Câu trả lời:


8

Giả sử các cột xuất hiện theo thứ tự thời gian, hàng đầu tiên (ví dụ) chỉ ra rằng tổng công trình qua từng thời kỳ đã đi

0, 0+45 = 45, 45+135 = 180, 180+405 = 585, 585+1010 = 1595, ..., 2230+0 = 2230.

Quá trình xây dựng đã đi được một nửa vào lúc 22h30 = 1115. Điều này xảy ra trong giai đoạn 4, bởi vì vào cuối giai đoạn 3, tổng số là 585, vào cuối giai đoạn 4, tổng số là 1595 và 585 <= 1115 <1595.

Đây dường như là kết quả được báo cáo bởi cột [Trung vị], đưa ra chỉ số của khoảng thời gian (bắt đầu từ 1 bên trái).

Bạn có thể mã này bằng ngôn ngữ yêu thích của bạn . Tuy nhiên, bảng rất nhỏ (100 hàng), bảng tính sẽ thuận tiện, nếu chỉ để kiểm tra những gì bạn làm chính thức hơn trong Python hoặc bất cứ điều gì. Đây là những gì nó có thể trông giống như:

Bảng tính

Ba hàng dữ liệu đầu tiên có cùng giá trị như của bạn. Hai hàng dữ liệu tiếp theo (được bao quanh bởi các dòng trống) được chọn tiếp tục xuống trong bảng của bạn. Năm hàng dữ liệu cuối cùng thực hiện thuật toán một chút.

(Lưu ý, như được hiển thị trong hai dòng cuối cùng của bảng tính, cách Excel chọn khoảng thời gian sau bất cứ khi nào chính giữa rơi vào giữa hai giai đoạn. Đây không nhất thiết là câu trả lời "đúng", nhưng đó là câu trả lời hợp lệ.)

Dưới đây là các công thức trong các cột H: R:

Công thức

Bạn không cần phải gõ tất cả. Cách gõ duy nhất cần thiết là:

  • =H2+A2trong I2. Kéo cái này qua O2. Điều này tính toán các khoản tiền tích lũy. Nó yêu cầu các cột A: G theo thứ tự thời gian.

  • =O2/2trong P2. Điều này tìm thấy một nửa tổng số.

  • =Match(P2,H2:O2,1)trong quý 2 Điều này lập chỉ mục cột nơi xây dựng đã hoàn thành một nửa.

  • =Offset($A$1:$G$1,0 0, Q2-1, 1, 1)trong R2. Điều này có được tiêu đề cột tương ứng với chỉ mục.

Sau đó dán 0vào tất cả các cột H và kéo I2: R2 xuống nhiều hàng nếu cần.

Điều này có hiệu quả như là mã giả cho thuật toán. Phần khó nhất sẽ là tìm kiếm để thực hiện MATCHchức năng của Excel . Nhưng điều đó không yêu cầu bất kỳ thủ công nào: nó không hiệu quả để tìm kiếm từng mảng tổng tích lũy theo tuần tự (chứ không phải với thuật toán tìm kiếm nhị phân ưa thích) vì các mảng này quá ngắn.


Cảm ơn bạn rất nhiều whuber! Đây là những gì tôi đang tìm kiếm. :)
Emily

1

Nếu bạn muốn trả về cột trung vị, có lẽ tôi sẽ sử dụng một con trỏ python để lặp qua các hàng. Sử dụng các trường để điền vào danh sách và sau đó trả về mục trung tâm (sẽ được lập chỉ mục tại [3] cho 7 mục) sau khi gọi hàm sort () trong danh sách bạn đã tạo. Tôi sẽ viết cho bạn một chút mã khi tôi trở về từ bữa trưa.


Giữ mã hóa cho đến khi bạn chắc chắn đây là những gì cần thiết!
whuber

Cho dù đó là năm hay số tiền chỉ là sự khác biệt giữa từ điển và danh sách, tôi nên nghĩ.
Nathanus

Tôi đã kiểm tra thủ công thông qua nhận xét của người la hét về câu hỏi của tôi và có lẽ cột đó là chính xác, mặc dù thật tuyệt khi biết cách thực hiện điều này cho các khu vực nghiên cứu trong tương lai (không có các cột này)
Emily

Tôi nghĩ đó là một tính toán hoàn toàn khác, @Nathanus. Một người xem dữ liệu là một tập hợp đếm {x1, x2, ..., x7} không có thứ tự trong khi những người khác xem chúng là sự khác biệt trong một chuỗi (0, x1, x1 + x2, x1 + x2 + x3, ..., x7) thể hiện phân phối tích lũy theo thời gian. Giá trị trung bình của các số đếm sẽ là một giá trị vượt quá ba trong số chúng và lớn hơn hoặc bằng ba số còn lại. Trung vị của phân phối tích lũy là một thời gian, không phải là số đếm và được tìm thấy bằng các phương pháp được mô tả trong câu trả lời của tôi.
whuber

1
Bạn nói đúng: sự khác biệt không rõ ràng trong câu hỏi. Nó chỉ được đưa ra trong các ý kiến. Tôi đã chèn một đoạn giải thích ngắn trong câu hỏi.
whuber
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.