當(dāng)前位置:首頁 > 公眾號(hào)精選 > AI科技大本營(yíng)
[導(dǎo)讀]關(guān)于數(shù)據(jù)分析與可視化,以下介紹Pandas讀取數(shù)據(jù)以及保存數(shù)據(jù)的方法,畢竟我們很多時(shí)候需要讀取各種形式的數(shù)據(jù),以及將我們需要將所做的統(tǒng)計(jì)分析保存成特定的格式。

關(guān)于數(shù)據(jù)分析與可視化,以下介紹Pandas讀取數(shù)據(jù)以及保存數(shù)據(jù)的方法,畢竟我們很多時(shí)候需要讀取各種形式的數(shù)據(jù),以及將我們需要將所做的統(tǒng)計(jì)分析保存成特定的格式。
我們大致會(huì)說到的方法有:


  • read_sql()

  • to_sql()

  • read_clipboard()

  • from_dict()

  • to_dict()

  • to_clipboard()

  • read_json()

  • to_json()

  • read_html()

  • to_html()

  • read_table()

  • read_csv()

  • to_csv()

  • read_excel()

  • to_excel()

  • read_xml()

  • to_xml()

  • read_pickle()

  • to_pickle()

read_sql()與

to_sql()

我們一般讀取數(shù)據(jù)都是從數(shù)據(jù)庫(kù)中來讀取的,因此可以在

read_sql()方法中填入對(duì)應(yīng)的

sql語句然后來讀取我們想要的數(shù)據(jù),

pd.read_sql(sql, con, index_col=None,
coerce_float=True, params=None,
parse_dates=None,
columns=None, chunksize=None)


參數(shù)詳解如下:


  • sql: SQL命令字符串
  • con: 連接SQL數(shù)據(jù)庫(kù)的Engine,一般用SQLAlchemy或者是PyMysql之類的模塊來建立
  • index_col:選擇某一列作為Index
  • coerce_float:將數(shù)字形式的字符串直接以float型讀入
  • parse_dates: 將某一列日期型字符串傳喚為datatime型數(shù)據(jù),可以直接提供需要轉(zhuǎn)換的列名以默認(rèn)的日期形式轉(zhuǎn)換,或者也可以提供字典形式的列名和轉(zhuǎn)換日期的格式,
我們用

PyMysql這個(gè)模塊來連接數(shù)據(jù)庫(kù),并且讀取數(shù)據(jù)庫(kù)當(dāng)中的數(shù)據(jù),首先我們導(dǎo)入所需要的模塊,并且建立起與數(shù)據(jù)庫(kù)的連接

import pandas as pd
from pymysql import *

conn = connect(host='localhost', port=3306, database='database_name',
user='', password='', charset='utf8')


我們簡(jiǎn)單地寫一條

SQL命令來讀取數(shù)據(jù)庫(kù)當(dāng)中的數(shù)據(jù),并且用read_sql()方法來讀取數(shù)據(jù)

sql_cmd = "SELECT * FROM table_name"
df = pd.read_sql(sql_cmd, conn)
df.head()


上面提到

read_sql()方法當(dāng)中

parse_dates參數(shù)可以對(duì)日期格式的數(shù)據(jù)進(jìn)行處理,那我們來試一下其作用

sql_cmd_2 = "SELECT * FROM test_date"
df_1 = pd.read_sql(sql_cmd_2, conn)
df_1.head()


output


number  date_columns
0    1      2021-11-11
1    2      2021-10-01
2    3      2021-11-10


我們來看一個(gè)各個(gè)列的數(shù)據(jù)類型


df_1.info()


output



RangeIndex: 3 entries, 0 to 2
Data columns (total 2 columns):
#   Column        Non-Null Count  Dtype
---  ------        --------------  -----
0   number        3 non-null      int64
1   date_columns  3 non-null      object
dtypes: int64(1), object(1)
memory usage: 176.0  bytes


正常默認(rèn)情況下,

date_columns這一列也是被當(dāng)做是

String類型的數(shù)據(jù),要是我們通過

parse_dates參數(shù)將日期解析應(yīng)用與該列

df_2 = pd.read_sql(sql_cmd_2, conn, parse_dates="date_columns")
df_2.info()


output



RangeIndex: 3 entries, 0 to 2
Data columns (total 2 columns):
#   Column        Non-Null Count  Dtype
---  ------        --------------  -----
0   number        3 non-null      int64
1   date_columns  3 non-null      datetime64[ns]
dtypes: datetime64[ns](1), int64(1)
memory usage: 176.0 bytes


就轉(zhuǎn)換成了相對(duì)應(yīng)的日期格式,當(dāng)然我們還可以采用上面提到的另外一種格式


parse_dates={"date_column": {"format": "%d/%m/%y"}})


to_sql()方法

我們來看一下

to_sql()方法,作用是將

DataFrame當(dāng)中的數(shù)據(jù)存放到數(shù)據(jù)庫(kù)當(dāng)中,請(qǐng)看下面的示例代碼,我們創(chuàng)建一個(gè)基于內(nèi)存的

SQLite數(shù)據(jù)庫(kù)

from sqlalchemy import create_engine
engine = create_engine('sqlite://', echo=False)


然后我們創(chuàng)建一個(gè)用于測(cè)試的數(shù)據(jù)集,并且存放到該數(shù)據(jù)庫(kù)當(dāng)中,


df = pd.DataFrame({'num': [1, 3, 5]})
df.to_sql('nums', con=engine)


查看一下是否存取成功了


engine.execute("SELECT * FROM nums").fetchall()


output


[(0, 1), (1, 3), (2, 5)]


我們可以嘗試著往里面添加數(shù)據(jù)


df2 = pd.DataFrame({'num': [7, 9, 11]})
df2.to_sql('nums', con=engine, if_exists='append')
engine.execute("SELECT * FROM nums").fetchall()


output


[(0, 1), (1, 3), (2, 5), (0, 7), (1, 9), (2, 11)]


注意到上面的

if_exists參數(shù)上面填的是

append,意味著添加新數(shù)據(jù)進(jìn)去,當(dāng)然我們也可以將原有的數(shù)據(jù)替換掉,將

append替換成

replace

df2.to_sql('nums', con=engine, if_exists='replace')
engine.execute("SELECT * FROM nums").fetchall()


output


[(0, 7), (1, 9), (2, 11)]


from_dict()方法和

to_dict()方法

有時(shí)候我們的數(shù)據(jù)是以字典的形式存儲(chǔ)的,有對(duì)應(yīng)的鍵值對(duì),我們?nèi)绾胃鶕?jù)字典當(dāng)中的數(shù)據(jù)來創(chuàng)立

DataFrame,假設(shè)

a_dict = {
'學(xué)校': '清華大學(xué)',
'地理位置': '北京',
'排名': 1
}


一種方法是調(diào)用

json_normalize()方法,代碼如下

df = pd.json_normalize(a_dict)


output


學(xué)校 地理位置  排名
0  清華大學(xué)   北京   1


當(dāng)然我們直接調(diào)用

pd.DataFrame()方法也是可以的

df = pd.DataFrame(json_list, index = [0])


output


學(xué)校 地理位置  排名
0  清華大學(xué)   北京   1


當(dāng)然我們還可以用

from_dict()方法,代碼如下

df = pd.DataFrame.from_dict(a_dict,orient='index').T


output


學(xué)校 地理位置  排名
0  清華大學(xué)   北京   1


這里最值得注意的是

orient參數(shù),用來指定字典當(dāng)中的鍵是用來做行索引還是列索引,請(qǐng)看下面兩個(gè)例子

data = {'col_1': [1, 2, 3, 4],
'col_2': ['A', 'B', 'C', 'D']}


我們將

orient參數(shù)設(shè)置為

columns,將當(dāng)中的鍵當(dāng)做是列名

df = pd.DataFrame.from_dict(data, orient='columns')


output


col_1 col_2
0      1     A
1      2     B
2      3     C
3      4     D


當(dāng)然我們也可以將其作為是行索引,將

orient設(shè)置為是

index

df = pd.DataFrame.from_dict(data, orient='index')


output


0  1  2  3
col_1  1  2  3  4
col_2  A  B  C  D


to_dict()方法

語法如下:


df.to_dict(orient='dict')


針對(duì)

orient參數(shù),一般可以填這幾種形式

一種是默認(rèn)的

dict,代碼如下

df = pd.DataFrame({'shape': ['square', 'circle', 'triangle'],
'degrees': [360, 360, 180],
'sides': [4, 5, 3]})
df.to_dict(orient='dict')


output


{'shape': {0: 'square', 1: 'circle', 2: 'triangle'}, 'degrees': {0: 360, 1: 360, 2: 180}, 'sides': {0: 4, 1: 5, 2: 3}}


也可以是

list,代碼如下

df.to_dict(orient='list')


output


{'shape': ['square', 'circle', 'triangle'], 'degrees': [360, 360, 180], 'sides': [4, 5, 3]}


除此之外,還有

split,代碼如下

df.to_dict(orient='split')


output


{'index': [0, 1, 2], 'columns': ['shape', 'degrees', 'sides'], 'data': [['square', 360, 4], ['circle', 360, 5], ['triangle', 180, 3]]}


還有

records,代碼如下

df.to_dict(orient='records')


output


[{'shape': 'square', 'degrees': 360, 'sides': 4}, {'shape': 'circle', 'degrees': 360, 'sides': 5}, {'shape': 'triangle', 'degrees': 180, 'sides': 3}]


最后一種是

index,代碼如下

df.to_dict(orient='index')


output


{0: {'shape': 'square', 'degrees': 360, 'sides': 4}, 1: {'shape': 'circle', 'degrees': 360, 'sides': 5}, 2: {'shape': 'triangle', 'degrees': 180, 'sides': 3}}


read_json()方法和

to_json()方法

我們經(jīng)常也會(huì)在實(shí)際工作與學(xué)習(xí)當(dāng)中遇到需要去處理

JSON格式數(shù)據(jù)的情況,我們用

Pandas模塊當(dāng)中的

read_json()方法來進(jìn)行處理,我們來看一下該方法中常用到的參數(shù)

orient:對(duì)應(yīng)JSON字符串的格式主要有


  • split: 格式類似于:

    {index: [index], columns: [columns], data: [values]}

例如我們的JSON字符串長(zhǎng)這樣


a = '{"index":[1,2,3],"columns":["a","b"],"data":[[1,3],[2,8],[3,9]]}'
df = pd.read_json(a, orient='split')


output


a  b
1  1  3
2  2  8
3  3  9


  • records: 格式類似于:

    [{column: value}, ... , {column: value}]

例如我們的JSON字符串長(zhǎng)這樣


a = '[{"name":"Tom","age":"18"},{"name":"Amy","age":"20"},{"name":"John","age":"17"}]'
df_1 = pd.read_json(a, orient='records')


output


name  age
0   Tom   18
1   Amy   20
2  John   17


  • index: 格式類似于:

    {index: {column: value}}

例如我們的JSON字符串長(zhǎng)這樣


a = '{"index_1":{"name":"John","age":20},"index_2":{"name":"Tom","age":30},"index_3":{"name":"Jason","age":50}}'
df_1 = pd.read_json(a, orient='index')


output


name  age
index_1   John   20
index_2    Tom   30
index_3  Jason   50


  • columns: 格式類似于:

    {column: {index: value}}

我們要是將上面的

index變成

columns,就變成

df_1 = pd.read_json(a, orient='columns')


output


index_1 index_2 index_3
name    John     Tom   Jason
age       20      30      50


  • values: 數(shù)組

例如我們的JSON字符串長(zhǎng)這樣


v='[["a",1],["b",2],["c", 3]]'
df_1 = pd.read_json(v, orient="values")


output


0  1
0  a  1
1  b  2
2  c  3


to_json()方法

DataFrame數(shù)據(jù)對(duì)象輸出成

JSON字符串,可以使用

to_json()方法來實(shí)現(xiàn),其中

orient參數(shù)可以輸出不同格式的字符串,用法和上面的大致相同,這里就不做過多的贅述

read_html()方法和

to_html()方法

有時(shí)候我們需要抓取網(wǎng)頁上面的一個(gè)表格信息,相比較使用

Xpath或者是

Beautifulsoup,我們可以使用

pandas當(dāng)中已經(jīng)封裝好的函數(shù)

read_html來快速地進(jìn)行獲取,例如我們通過它來抓取菜鳥教程Python網(wǎng)站上面的一部分內(nèi)容

url = "https://www.runoob.com/python/python-exceptions.html"
dfs = pd.read_html(url, header=None, encoding='utf-8')


返回的是一個(gè)

list的

DataFrame對(duì)象

df = dfs[0]
df.head()


output


異常名稱               描述
0                NaN              NaN
1      BaseException          所有異常的基類
2         SystemExit          解釋器請(qǐng)求退出
3  KeyboardInterrupt  用戶中斷執(zhí)行(通常是輸入^C)
4          Exception          常規(guī)錯(cuò)誤的基類


當(dāng)然

read_html()方法也支持讀取

HTML形式的表格,我們先來生成一個(gè)類似這樣的表格,通過

to_html()方法

df = pd.DataFrame(np.random.randn(3, 3))
df.to_html("test_1.html")


當(dāng)然這個(gè)

HTML形式的表格長(zhǎng)這個(gè)樣子


然后我們?cè)偻ㄟ^

read_html方法讀取該文件,

dfs = pd.read_html("test_1.html")
dfs[0]


read_csv()方法和

to_csv()方法

read_csv()方法

read_csv()方法是最常被用到的

pandas讀取數(shù)據(jù)的方法之一,其中我們經(jīng)常用到的參數(shù)有

  • filepath_or_buffer: 數(shù)據(jù)輸入的路徑,可以是文件的路徑的形式,例如
pd.read_csv('data.csv')


output


num1  num2  num3  num4
0     1     2     3     4
1     6    12     7     9
2    11    13    15    18
3    12    10    16    18


也可以是URL,如果訪問該URL會(huì)返回一個(gè)文件的話


pd.read_csv("http://...../..../data.csv")


  • sep: 讀取

    csv文件時(shí)指定的分隔符,默認(rèn)為逗號(hào),需要注意的是:“csv文件的分隔符”要和“我們讀取csv文件時(shí)指定的分隔符”保持一致

假設(shè)我們的數(shù)據(jù)集,

csv文件當(dāng)中的分隔符從逗號(hào)改成了"\t",需要將

sep參數(shù)也做相應(yīng)的設(shè)定

pd.read_csv('data.csv', sep='\t')


  • index_col: 我們?cè)谧x取文件之后,可以指定某一列作為

    DataFrame的索引

pd.read_csv('data.csv', index_col="num1")


output


num2  num3  num4
num1
1        2     3     4
6       12     7     9
11      13    15    18
12      10    16    18


除了指定單個(gè)列,我們還可以指定多個(gè)列,例如


df = pd.read_csv("data.csv", index_col=["num1", "num2"])


output


num3  num4
num1 num2
1    2        3     4
6    12       7     9
11   13      15    18
12   10      16    18


  • usecols:如果數(shù)據(jù)集當(dāng)中的列很多,而我們并不想要全部的列、而是只要指定的列就可以,就可以使用這個(gè)參數(shù)
pd.read_csv('data.csv', usecols=["列名1", "列名2", ....])


output


num1  num2
0     1     2
1     6    12
2    11    13
3    12    10


除了指定列名之外,也可以通過索引來選擇想要的列,示例代碼如下


df = pd.read_csv("data.csv", usecols = [0, 1, 2])


output


num1  num2  num3
0     1     2     3
1     6    12     7
2    11    13    15
3    12    10    16


另外usecols參數(shù)還有一個(gè)比較好玩的地方在于它能夠接收一個(gè)函數(shù),將列名作為參數(shù)傳遞到該函數(shù)中調(diào)用,要是滿足條件的,就選中該列,反之則不選擇該列


# 選擇列名的長(zhǎng)度大于 4 的列
pd.read_csv('girl.csv', usecols=lambda x: len(x) > 4)


  • prefix: 當(dāng)導(dǎo)入的數(shù)據(jù)沒有header的時(shí)候,可以用來給列名添加前綴
df = pd.read_csv("data.csv", header = None)


output


0     1     2     3
0  num1  num2  num3  num4
1     1     2     3     4
2     6    12     7     9
3    11    13    15    18
4    12    10    16    18


如果我們將

header設(shè)為None,

pandas則會(huì)自動(dòng)生成表頭0, 1, 2, 3..., 然后我們?cè)O(shè)置

prefix參數(shù)為表頭添加前綴

df = pd.read_csv("data.csv", prefix="test_", header = None)


output


test_0 test_1 test_2 test_3
0   num1   num2   num3   num4
1      1      2      3      4
2      6     12      7      9
3     11     13     15     18
4     12     10     16     18


  • skiprows: 過濾掉哪些行,參數(shù)當(dāng)中填行的索引
代碼如下:


df = pd.read_csv("data.csv", skiprows=[0, 1])


output


6  12   7   9
0  11  13  15  18
1  12  10  16  18


上面的代碼過濾掉了前兩行的數(shù)據(jù),直接將第三行與第四行的數(shù)據(jù)輸出,當(dāng)然我們也可以看到第二行的數(shù)據(jù)被當(dāng)成是了表頭


  • nrows: 該參數(shù)設(shè)置一次性讀入的文件行數(shù),對(duì)于讀取大文件時(shí)非常有用,比如 16G 內(nèi)存的PC無法容納幾百G的大文件
代碼如下:


df = pd.read_csv("data.csv", nrows=2)


output


num1  num2  num3  num4
0     1     2     3     4
1     6    12     7     9


to_csv()方法

該方法主要是用于將

DataFrame寫入

csv文件當(dāng)中,示例代碼如下

df.to_csv("文件名.csv", index = False)


我們還能夠輸出到

zip文件的格式,代碼如下

df = pd.read_csv("data.csv")
compression_opts = dict(method='zip',
archive_name='output.csv')
df.to_csv('output.zip', index=False,
compression=compression_opts)


read_excel()方法和

to_excel()方法

read_excel()方法

要是我們的數(shù)據(jù)是存放在

excel當(dāng)中就可以使用

read_excel()方法,該方法中的參數(shù)和上面提到的

read_csv()方法相差不多,這里就不做過多的贅述,我們直接來看代碼

df = pd.read_excel("test.xlsx")


  • dtype: 該參數(shù)能夠?qū)χ付骋涣械臄?shù)據(jù)類型加以設(shè)定
df = pd.read_excel("test.xlsx", dtype={'Name': str, 'Value': float})


output


Name  Value
0  name1    1.0
1  name2    2.0
2  name3    3.0
3  name4    4.0


  • sheet_name: 對(duì)于讀取

    excel當(dāng)中的哪一個(gè)

    sheet當(dāng)中的數(shù)據(jù)加以設(shè)定

df = pd.read_excel("test.xlsx", sheet_name="Sheet3")


output


Name  Value
0  name1     10
1  name2     10
2  name3     20
3  name4     30


當(dāng)然我們要是想一次性讀取多個(gè)

Sheet當(dāng)中的數(shù)據(jù)也是可以的,最后返回的數(shù)據(jù)是以

dict形式返回的

df = pd.read_excel("test.xlsx", sheet_name=["Sheet1", "Sheet3"])


output


{'Sheet1':     Name  Value
0  name1      1
1  name2      2
2  name3      3
3  name4      4, 'Sheet3':     Name  Value
0  name1     10
1  name2     10
2  name3     20
3  name4     30}


例如我們只想要

Sheet1的數(shù)據(jù),可以這么來做

df1.get("Sheet1")


output


Name  Value
0  name1      1
1  name2      2
2  name3      3
3  name4      4


to_excel()方法

DataFrame對(duì)象寫入

Excel表格,除此之外還有

ExcelWriter()方法也有著異曲同工的作用,代碼如下

df1 = pd.DataFrame([['A', 'B'], ['C', 'D']],
index=['Row 1', 'Row 2'],
columns=['Col 1', 'Col 2'])
df1.to_excel("output.xlsx")


當(dāng)然我們還可以指定

Sheet的名稱

df1.to_excel("output.xlsx", sheet_name='Sheet_Name_1_1_1')


有時(shí)候我們需要將多個(gè)

DataFrame數(shù)據(jù)集輸出到一個(gè)

Excel當(dāng)中的不同的

Sheet當(dāng)中

df2 = df1.copy()
with pd.ExcelWriter('output.xlsx') as writer:
df1.to_excel(writer, sheet_name='Sheet_name_1_1_1')
df2.to_excel(writer, sheet_name='Sheet_name_2_2_2')


我們還可以在現(xiàn)有的

Sheet的基礎(chǔ)之上,再添加一個(gè)

Sheet

df3 = df1.copy()
with pd.ExcelWriter('output.xlsx', mode="a", engine="openpyxl") as writer:
df3.to_excel(writer, sheet_name='Sheet_name_3_3_3')


我們可以生成至

Excel文件并且進(jìn)行壓縮包處理

with zipfile.ZipFile("output_excel.zip", "w") as zf:
with zf.open("output_excel.xlsx", "w") as buffer:
with pd.ExcelWriter(buffer) as writer:
df1.to_excel(writer)


對(duì)于日期格式或者是日期時(shí)間格式的數(shù)據(jù),也能夠進(jìn)行相應(yīng)的處理


from datetime import date, datetime
df = pd.DataFrame(
[
[date(2019, 1, 10), date(2021, 11, 24)],
[datetime(2019, 1, 10, 23, 33, 4), datetime(2021, 10, 20, 13, 5, 13)],
],
index=["Date", "Datetime"],
columns=["X", "Y"],
)
with pd.ExcelWriter(
"output_excel_date.xlsx",
date_format="YYYY-MM-DD",
datetime_format="YYYY-MM-DD HH:MM:SS"
) as writer:
df.to_excel(writer)


read_table()方法

對(duì)于

txt文件,既可以用

read_csv()方法來讀取,也可以用

read_table()方法來讀取,其中的參數(shù)和read_csv()當(dāng)中的參數(shù)大致相同,這里也就不做過多的贅述

df = pd.read_table("test.txt", names = ["col1", "col2"], sep=' ')


output


col1  col2
0     1     2
1     3     4
2     5     6
3     7     8
4     9    10
5    11    12


我們要讀取的txt文件當(dāng)中的數(shù)據(jù)是以空格隔開的,因此再

sep參數(shù)上面需要設(shè)置成空格

read_pickle()方法和to_pickle()方法

Python當(dāng)中的

Pickle模塊實(shí)現(xiàn)了對(duì)一個(gè)

Python對(duì)象結(jié)構(gòu)的二進(jìn)制序列和反序列化,序列化過程是將文本信息轉(zhuǎn)變?yōu)槎M(jìn)制數(shù)據(jù)流,同時(shí)保存數(shù)據(jù)類型。例如數(shù)據(jù)處理過程中,突然有事兒要離開,可以直接將數(shù)據(jù)序列化到本地,這時(shí)候處理中的數(shù)據(jù)是什么類型,保存到本地也是同樣的類型,反序列化之后同樣也是該數(shù)據(jù)類型,而不是從頭開始處理

to_pickle()方法

我們先將

DataFrame數(shù)據(jù)集生成

pickle文件,對(duì)數(shù)據(jù)進(jìn)行永久儲(chǔ)存,代碼如下

df1.to_pickle("test.pkl")


read_pickle()方法

代碼如下


df2 = pd.read_pickle("test.pkl")


read_xml()方法和

to_xml()方法

XML指的是可擴(kuò)展標(biāo)記語言,和JSON類似也是用來存儲(chǔ)和傳輸數(shù)據(jù)的,還可以用作配置文件


XML和HTML之間的差異

XML和HTML為不同的目的而設(shè)計(jì)的


  • XML被設(shè)計(jì)用來傳輸和存儲(chǔ)數(shù)據(jù),其重點(diǎn)是數(shù)據(jù)的內(nèi)容
  • HTML被設(shè)計(jì)用來顯示數(shù)據(jù),其焦點(diǎn)是數(shù)據(jù)的外觀
  • XML不會(huì)替代HTML,是對(duì)HTML的補(bǔ)充
對(duì)XML最好的理解是獨(dú)立于軟件和硬件的信息傳輸工具,我們先通過

to_xml()方法生成XML數(shù)據(jù)

df = pd.DataFrame({'shape': ['square', 'circle', 'triangle'],
'degrees': [360, 360, 180],
'sides': [4, np.nan, 3]})
df.to_xml("test.xml")


我們用

pandas中的

read_xml()方法來讀取數(shù)據(jù)

df = pd.read_xml("test.xml")


output


shape  degrees  sides
0    square      360    4.0
1    circle      360    NaN
2  triangle      180    3.0


read_clipboard()方法

有時(shí)候數(shù)據(jù)獲取不太方便,我們可以通過復(fù)制的方式,通過

Pandas當(dāng)中的

read_clipboard()方法來讀取復(fù)制成功的數(shù)據(jù),例如我們選中一部分?jǐn)?shù)據(jù),然后復(fù)制,運(yùn)行下面的代碼

df_1 = pd.read_clipboard()


output


num1  num2  num3  num4
0     1     2     3     4
1     6    12     7     9
2    11    13    15    18
3    12    10    16    18


to_clipboard()方法

有復(fù)制就會(huì)有粘貼,我們可以將

DataFrame數(shù)據(jù)集輸出至剪貼板中,粘貼到例如

Excel表格中

df.to_clipboard()






本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉