Hướng dẫn bytes to csv python pandas - byte sang csv python pandas

Tôi muốn chuyển đổi dữ liệu 'byte' thành một khung dữ liệu gấu trúc.

Dữ liệu trông như thế này (một vài dòng đầu tiên):

    (b'#Settlement Date,Settlement Period,CCGT,OIL,COAL,NUCLEAR,WIND,PS,NPSHYD,OCGT'
 b',OTHER,INTFR,INTIRL,INTNED,INTEW,BIOMASS\n2017-01-01,1,7727,0,3815,7404,3'
 b'923,0,944,0,2123,948,296,856,238,\n2017-01-01,2,8338,0,3815,7403,3658,16,'
 b'909,0,2124,998,298,874,288,\n2017-01-01,3,7927,0,3801,7408,3925,0,864,0,2'
 b'122,998,298,816,286,\n2017-01-01,4,6996,0,3803,7407,4393,0,863,0,2122,998'

Các tiêu đề cột xuất hiện ở đầu. Mỗi dòng tiếp theo là một dấu thời gian và số.

Có một cách đơn giản để làm điều này?

Cám ơn rất nhiều

@Paula Livingstone:

Điều này có vẻ hoạt động:

s=str(bytes_data,'utf-8')

file = open("data.txt","w") 

file.write(s)
df=pd.read_csv('data.txt')

Có lẽ điều này có thể được thực hiện mà không cần sử dụng một tệp ở giữa.

Tôi hoàn toàn đồng ý với @jzwinck. Làm thế nào bạn có thể biện minh cho việc rò rỉ hệ thống mã hóa Python, thành một định dạng trao đổi dữ liệu chung?

Khi bạn sử dụng

s=str(bytes_data,'utf-8')

file = open("data.txt","w") 

file.write(s)
df=pd.read_csv('data.txt')
0 và chuỗi loại giao thức mảng
s=str(bytes_data,'utf-8')

file = open("data.txt","w") 

file.write(s)
df=pd.read_csv('data.txt')
1 Tripping tròn sẽ bị rối tung lên:

import pandas as pd
fname = './blah.csv'
pd.Series([b'x',b'y']).to_csv(fname)
>>> pd.read_csv(fname, dtype='S5')
     0     b'x'
0  b'1'  b"b'y'"

Sử dụng

s=str(bytes_data,'utf-8')

file = open("data.txt","w") 

file.write(s)
df=pd.read_csv('data.txt')
2 hoặc
s=str(bytes_data,'utf-8')

file = open("data.txt","w") 

file.write(s)
df=pd.read_csv('data.txt')
3 có hoạt động như mong đợi không?

>>> pd.read_csv(fname, dtype='S')
   0  b'x'
0  1  b'y'

Tôi thực sự thậm chí còn tìm thấy ^ bất ngờ vì nó dường như tự động diễn giải như các chuỗi Python?

Nếu người dùng chọn tải dữ liệu CSV dưới dạng

s=str(bytes_data,'utf-8')

file = open("data.txt","w") 

file.write(s)
df=pd.read_csv('data.txt')
4, nó sẽ được chỉ định rõ ràng giống như nó hoạt động khi bạn viết Unicode và không được suy ra từ đánh dấu cụ thể mã hóa Python.not inferred from python’s encoding specific markup:

>>> pd.Series(['x', 'y']).to_csv(fname)
>>> pd.read_csv(fname)
   0  x
0  1  y
>>> >>> pd.read_csv(fname, dtype='S10')
   0  b'x'
0  1  b'y'

Nếu bạn nhận được đầu vào nhị phân của dữ liệu có cấu trúc bảng, bạn có thể chuyển đổi nó thành CSV một cách dễ dàng bằng cách sử dụng cắt

s=str(bytes_data,'utf-8')

file = open("data.txt","w") 

file.write(s)
df=pd.read_csv('data.txt')
5 để loại bỏ trình bao bọc byte
s=str(bytes_data,'utf-8')

file = open("data.txt","w") 

file.write(s)
df=pd.read_csv('data.txt')
6 và áp dụng
s=str(bytes_data,'utf-8')

file = open("data.txt","w") 

file.write(s)
df=pd.read_csv('data.txt')
7 trên kết quả để thay thế các ký tự bảng bằng dấu phẩy.


Xây dựng vấn đề

Ví dụ: giả sử bạn có định dạng byte sau trong mã Python của bạn (ví dụ: được trả về bởi API hoặc đọc từ tệp nhị phân):

b'Name\tProfession\tAge\tIncome\nAlice\tProgrammer\t26\t88000\nBob\tEngineer\t21\t33000\nCarl\tStudent\t19\t-12000'

Cấu trúc tiền tố

s=str(bytes_data,'utf-8')

file = open("data.txt","w") 

file.write(s)
df=pd.read_csv('data.txt')
6 cho thấy nó thuộc loại
s=str(bytes_data,'utf-8')

file = open("data.txt","w") 

file.write(s)
df=pd.read_csv('data.txt')
4:

byte = b'Name\tProfession\tAge\tIncome\nAlice\tProgrammer\t26\t88000\nBob\tEngineer\t21\t33000\nCarl\tStudent\t19\t-12000'
print(type(byte))
# 

Giải pháp nhanh chóng

Vì vậy, làm thế nào để chuyển đổi đối tượng

s=str(bytes_data,'utf-8')

file = open("data.txt","w") 

file.write(s)
df=pd.read_csv('data.txt')
4 thành CSV?

Bạn có thể chuyển đổi đối tượng byte thành một chuỗi trong ba bước:

  1. Chuyển đổi đối tượng
    import pandas as pd
    fname = './blah.csv'
    pd.Series([b'x',b'y']).to_csv(fname)
    
    1 thành một chuỗi bằng cách sử dụng
    import pandas as pd
    fname = './blah.csv'
    pd.Series([b'x',b'y']).to_csv(fname)
    
    2 và cắt
    import pandas as pd
    fname = './blah.csv'
    pd.Series([b'x',b'y']).to_csv(fname)
    
    3 để loại bỏ ký hiệu kèm theo
    import pandas as pd
    fname = './blah.csv'
    pd.Series([b'x',b'y']).to_csv(fname)
    
    4.
  2. Chẳng hạn, hãy chuyển đổi chuỗi thành chuỗi được định dạng CSV bằng cách sử dụng
    import pandas as pd
    fname = './blah.csv'
    pd.Series([b'x',b'y']).to_csv(fname)
    
    5.
  3. Viết CSV vào tệp bằng cách sử dụng hàm
    import pandas as pd
    fname = './blah.csv'
    pd.Series([b'x',b'y']).to_csv(fname)
    
    6 bằng đối số
    import pandas as pd
    fname = './blah.csv'
    pd.Series([b'x',b'y']).to_csv(fname)
    
    7.

Ví dụ tối thiểu

Tại đây, ví dụ về mã tối thiểu mà bạn có thể sao chép và dán:

________số 8

Tệp CSV kết quả trông như thế này:

Hướng dẫn bytes to csv python pandas - byte sang csv python pandas

Lưu ý, chúng tôi sử dụng ký hiệu Escape Escape

import pandas as pd
fname = './blah.csv'
pd.Series([b'x',b'y']).to_csv(fname)
8 và
import pandas as pd
fname = './blah.csv'
pd.Series([b'x',b'y']).to_csv(fname)
9 để loại bỏ ý nghĩa đặc biệt của tab và dòng mới vì trong chuỗi được chuyển đổi thu được từ biểu diễn byte, các ký tự tab và Newline hiện được biểu thị bằng hai ký tự
>>> pd.read_csv(fname, dtype='S5')
     0     b'x'
0  b'1'  b"b'y'"
0 và
>>> pd.read_csv(fname, dtype='S5')
     0     b'x'
0  b'1'  b"b'y'"
1 và các ký tự mới với hai ký tự
>>> pd.read_csv(fname, dtype='S5')
     0     b'x'
0  b'1'  b"b'y'"
0 và
>>> pd.read_csv(fname, dtype='S5')
     0     b'x'
0  b'1'  b"b'y'"
3.

Ví dụ: nếu bạn in các ký tự chuỗi được chuyển đổi gốc (từ byte), bạn sẽ thấy vấn đề đó:

csv = str(byte)[2:-1]
for i,c in enumerate(csv):
    print(i,c)

'''
Output:
0 N
1 a
2 m
3 e
4 \
5 t
6 P
7 r
8 o
9 f
10 e
11 s
12 s
13 i
14 o
15 n
'''

Nói cách khác, chúng tôi muốn thay thế trình tự của hai ký tự đó bằng dấu phẩy duy nhất và ký tự mới.

Bạn có thể chuyển đổi nó sang bất kỳ định dạng nào khác như được chỉ định trong hướng dẫn liên quan này:

Tài nguyên liên quan: Hướng dẫn cuối cùng để chuyển đổi CSV sang định dạng khácRelated Resource: Ultimate Guide to Convert a CSV to another format

Hướng dẫn bytes to csv python pandas - byte sang csv python pandas

Trong khi làm việc như một nhà nghiên cứu trong các hệ thống phân tán, Tiến sĩ Christian Mayer đã tìm thấy tình yêu của mình đối với việc dạy các sinh viên khoa học máy tính.

Để giúp học sinh đạt được thành công cao hơn của Python, ông đã thành lập trang web giáo dục chương trình Finxter.com. Ông là tác giả của cuốn sách lập trình phổ biến Python Oneer (Nostarch 2020), đồng tác giả của loạt sách Break Break Python, những cuốn sách tự xuất bản, người đam mê khoa học máy tính, freelancer và chủ sở hữu của một trong 10 blog Python lớn nhất trên toàn thế giới.

Niềm đam mê của ông là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ tăng cường các kỹ năng của họ. Bạn có thể tham gia học viện email miễn phí của anh ấy ở đây.

Byte () làm gì trong Python?

Hàm python byte () hàm byte () trả về đối tượng byte.Nó có thể chuyển đổi các đối tượng thành các đối tượng byte hoặc tạo đối tượng byte trống của kích thước được chỉ định.returns a bytes object. It can convert objects into bytes objects, or create empty bytes object of the specified size.

Gấu trúc có thể viết cho CSV không?

Bằng cách sử dụng phương thức pandas.dataframe.to_csv (), bạn có thể ghi/lưu/xuất/xuất một tệp dữ liệu pandas sang tệp CSV.Theo mặc định, TO_CSV () Xuất DataFrame vào tệp CSV với dấu phân cách dấu phẩy và chỉ mục hàng làm cột đầu tiên. DataFrame. to_csv() method you can write/save/export a pandas DataFrame to CSV File. By default to_csv() method export DataFrame to a CSV file with comma delimiter and row index as the first column.

Làm thế nào để bạn chuyển đổi byte thành các số trong Python?

Cú pháp: int.from_bytes (byte, byteorder, *, đã ký = false).
Parameters:.
Trả về - một int tương đương với byte đã cho ..

Làm cách nào để chuyển đổi tệp CSV thành gấu trúc?

Hàm gandas to_csv () được sử dụng để chuyển đổi dữ liệu dữ liệu thành dữ liệu CSV.Để ghi dữ liệu CSV vào một tệp, chúng ta chỉ cần chuyển một đối tượng tệp cho chức năng ...
Nhập Gandas dưới dạng PD ..
data = {'name': ['Smith', 'Parker'], 'id': [101, pd.....
thông tin = pd.....
in ('giá trị dataFrame: \ n', thông tin).
csv_data = thông tin ..