Tôi hiện đang có một tập lệnh Python phân tích một bãi rác jstack và xuất ra một khung dữ liệu như thế này:
Tôi muốn biến điều này thành hình ảnh PNG hoặc JPG của bảng chứa dữ liệu này. Một cái gì đó đơn giản như thế này:
Có ai biết cách dễ nhất, thẳng tiến nhất để tạo ra một hình ảnh như thế này để nó được lưu theo cùng một đường dẫn mà tôi đang chạy mã?
Cảm ơn bạn! Javier
***EDIT:
Các giải pháp được cung cấp là xuất ra một bảng không thể đọc được với không gian trắng chủ yếu như dưới đây:
Đầu ra bảng
Bất cứ ai cũng có thể đề xuất những gì tôi đang làm sai và điều chỉnh tham số nào?
*** Chỉnh sửa #2:
Đây là mã của tôi:
df = pd.DataFrame[table_data, columns = ["Method Name", "# of threads", "% of threads"]]
ax = plt.subplot[111, frame_on=False]
ax.xaxis.set_visible[False]
ax.yaxis.set_visible[False]
t = table[ax, df]
t.auto_set_font_size[False]
t.set_fontsize[12]
fig.savefig["test.png"]
Và đầu ra hiện tại:
Đầu ra bảng #2
*** Chỉnh sửa #3:
Đây là DataFrame tôi đang đi qua:
Method Name # of threads % of threads
0 at sun.nio.ch.EPollArrayWrapper.epollWait[Nati... 33 32.35
1 at sun.misc.Unsafe.park[Native Method] 29 28.43
2 NO JAVA STACK TRACE 18 17.64
3 at java.net.PlainSocketImpl.socketAccept[Nativ... 6 05.88
4 at xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx... 5 04.90
5 at java.lang.Object.wait[Native Method] 4 03.92
6 at java.lang.Thread.sleep[Native Method] 3 02.94
7 at java.net.SocketInputStream.socketRead0[Nati... 3 02.94
8 at sun.nio.ch.ServerSocketChannelImpl.accept0[... 1 00.98
Trong hướng dẫn ngắn này, bạn sẽ thấy hai phương pháp khác nhau để tạo gấu trúc DataFrame:
- Bằng cách nhập các giá trị vào chính Python để tạo DataFrame
- Bằng cách nhập các giá trị từ một tệp [chẳng hạn như tệp CSV] và sau đó tạo khung dữ liệu trong python dựa trên các giá trị được nhập
Phương pháp 1: Gõ các giá trị trong Python để tạo GANDAS DATAFRAME
Để tạo gấu trúc DataFrame trong Python, bạn có thể làm theo mẫu chung này:
import pandas as pd data = {'first_column': ['first_value', 'second_value', ...], 'second_column': ['first_value', 'second_value', ...], .... } df = pd.DataFrame[data] print [df]
Lưu ý rằng bạn không cần sử dụng báo giá xung quanh các giá trị số [trừ khi bạn muốn nắm bắt các giá trị đó dưới dạng chuỗi].
Bây giờ, hãy để xem cách áp dụng mẫu trên bằng một ví dụ đơn giản.
Để bắt đầu, hãy để nói rằng bạn có dữ liệu sau về sản phẩm và bạn muốn thu thập dữ liệu đó trong Python bằng cách sử dụng Pandas DataFrame:
product_name | giá bán |
máy tính xách tay | 1200 |
Máy in | 150 |
máy tính bảng | 300 |
bàn | 450 |
cái ghế | 200 |
Sau đó, bạn có thể sử dụng mã bên dưới để tạo DataFrame cho ví dụ của chúng tôi:
import pandas as pd data = {'product_name': ['laptop', 'printer', 'tablet', 'desk', 'chair'], 'price': [1200, 150, 300, 450, 200] } df = pd.DataFrame[data] print [df]
Chạy mã trong Python và bạn sẽ nhận được DataFrame sau:
product_name price
0 laptop 1200
1 printer 150
2 tablet 300
3 desk 450
4 chair 200
Bạn có thể nhận thấy rằng mỗi hàng được biểu thị bằng một số [còn được gọi là chỉ mục] bắt đầu từ 0. Thay vào đó, bạn có thể gán một giá trị/tên khác để biểu thị mỗi hàng.
Ví dụ: trong mã bên dưới, index = [‘sản phẩm_1 ′, sản phẩm của_2, sản phẩm của sản phẩm_3index=[‘product_1′,’product_2′,’product_3′,’product_4′,’product_5’] was added:
import pandas as pd data = {'product_name': ['laptop', 'printer', 'tablet', 'desk', 'chair'], 'price': [1200, 150, 300, 450, 200] } df = pd.DataFrame[data, index=['product_1','product_2','product_3','product_4','product_5']] print [df]
Bây giờ bạn sẽ thấy chỉ mục mới được chỉ định [như được tô sáng màu vàng]:
product_name price
product_1 laptop 1200
product_2 printer 150
product_3 tablet 300
product_4 desk 450
product_5 chair 200
Bây giờ, hãy xem xét phương thức nhập thứ hai để nhập các giá trị vào Python để tạo ra DataFrame.
Phương pháp 2: Nhập các giá trị từ tệp CSV để tạo gấu trúc DataFrame
Bạn có thể sử dụng mẫu sau để nhập tệp CSV vào Python để tạo DataFrame của bạn:
import pandas as pd data = pd.read_csv[r'Path where the CSV file is stored\File name.csv'] df = pd.DataFrame[data] print [df]
Hãy nói rằng bạn có dữ liệu sau được lưu trữ trong tệp CSV [trong đó tên tệp CSV là ‘Sản phẩm]:
product_name | giá bán |
máy tính xách tay | 1200 |
Máy in | 150 |
máy tính bảng | 300 |
bàn | 450 |
cái ghế | 200 |
Sau đó, bạn có thể sử dụng mã bên dưới để tạo DataFrame cho ví dụ của chúng tôi:
Chạy mã trong Python và bạn sẽ nhận được DataFrame sau:
Bạn có thể nhận thấy rằng mỗi hàng được biểu thị bằng một số [còn được gọi là chỉ mục] bắt đầu từ 0. Thay vào đó, bạn có thể gán một giá trị/tên khác để biểu thị mỗi hàng.‘C:\Users\Ron\Desktop\products.csv’
Ví dụ: trong mã bên dưới, index = [‘sản phẩm_1 ′, sản phẩm của_2, sản phẩm của sản phẩm_3
import pandas as pd data = pd.read_csv[r'C:\Users\Ron\Desktop\products.csv'] df = pd.DataFrame[data] print [df]
Bây giờ bạn sẽ thấy chỉ mục mới được chỉ định [như được tô sáng màu vàng]:
product_name price
0 laptop 1200
1 printer 150
2 tablet 300
3 desk 450
4 chair 200
Bây giờ, hãy xem xét phương thức nhập thứ hai để nhập các giá trị vào Python để tạo ra DataFrame.
Phương pháp 2: Nhập các giá trị từ tệp CSV để tạo gấu trúc DataFrame
Bạn có thể sử dụng mẫu sau để nhập tệp CSV vào Python để tạo DataFrame của bạn:
Hãy nói rằng bạn có dữ liệu sau được lưu trữ trong tệp CSV [trong đó tên tệp CSV là ‘Sản phẩm]:
Trong mã Python bên dưới, bạn sẽ cần thay đổi tên đường dẫn để phản ánh vị trí lưu trữ tệp CSV trên máy tính của bạn.
Ví dụ, hãy để giả sử rằng tệp CSV được lưu trữ theo đường dẫn sau:
Method Name # of threads % of threads
0 at sun.nio.ch.EPollArrayWrapper.epollWait[Nati... 33 32.35
1 at sun.misc.Unsafe.park[Native Method] 29 28.43
2 NO JAVA STACK TRACE 18 17.64
3 at java.net.PlainSocketImpl.socketAccept[Nativ... 6 05.88
4 at xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx... 5 04.90
5 at java.lang.Object.wait[Native Method] 4 03.92
6 at java.lang.Thread.sleep[Native Method] 3 02.94
7 at java.net.SocketInputStream.socketRead0[Nati... 3 02.94
8 at sun.nio.ch.ServerSocketChannelImpl.accept0[... 1 00.98
0& nbsp; ‘C: \ users \ ron \ Desktop \ Products.csv
Method Name # of threads % of threads
0 at sun.nio.ch.EPollArrayWrapper.epollWait[Nati... 33 32.35
1 at sun.misc.Unsafe.park[Native Method] 29 28.43
2 NO JAVA STACK TRACE 18 17.64
3 at java.net.PlainSocketImpl.socketAccept[Nativ... 6 05.88
4 at xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx... 5 04.90
5 at java.lang.Object.wait[Native Method] 4 03.92
6 at java.lang.Thread.sleep[Native Method] 3 02.94
7 at java.net.SocketInputStream.socketRead0[Nati... 3 02.94
8 at sun.nio.ch.ServerSocketChannelImpl.accept0[... 1 00.98
1Đây là mã Python đầy đủ cho ví dụ của chúng tôi:
Như trước đây, bạn sẽ nhận được cùng một DataFrame trong Python:Bạn cũng có thể tạo cùng một DataFrame bằng cách nhập tệp Excel vào Python bằng Pandas.