您好,登錄后才能下訂單哦!
本文小編為大家詳細(xì)介紹“怎么使用Pandas進(jìn)行數(shù)據(jù)讀取”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“怎么使用Pandas進(jìn)行數(shù)據(jù)讀取”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。
使用pandas進(jìn)行數(shù)據(jù)讀取,最常讀取的數(shù)據(jù)格式如下:
NO數(shù)據(jù)類型說(shuō)明使用方法1csv, tsv, txt可以讀取純文本文件pd.read_csv2excel可以讀取.xls .xlsx 文件pd.read_excel3mysql讀取關(guān)系型數(shù)據(jù)庫(kù)pd.read_sql
pd.read_csv
pandas對(duì)純文本的讀取提供了非常強(qiáng)力的支持,參數(shù)有四五十個(gè)。這些參數(shù)中,有的很容易被忽略,但是在實(shí)際工作中卻用處很大。pd.read_csv()
的格式如下:
read_csv( reader: FilePathOrBuffer, *, sep: str = ..., delimiter: str | None = ..., header: int | Sequence[int] | str = ..., names: Sequence[str] | None = ..., index_col: int | str | Sequence | Literal[False] | None = ..., usecols: int | str | Sequence | None = ..., squeeze: bool = ..., prefix: str | None = ..., mangle_dupe_cols: bool = ..., dtype: str | Mapping[str, Any] | None = ..., engine: str | None = ..., converters: Mapping[int | str, (*args, **kwargs) -> Any] | None = ..., true_values: Sequence[Scalar] | None = ..., false_values: Sequence[Scalar] | None = ..., skipinitialspace: bool = ..., skiprows: Sequence | int | (*args, **kwargs) -> Any | None = ..., skipfooter: int = ..., nrows: int | None = ..., na_values=..., keep_default_na: bool = ..., na_filter: bool = ..., verbose: bool = ..., skip_blank_lines: bool = ..., parse_dates: bool | List[int] | List[str] = ..., infer_datetime_format: bool = ..., keep_date_col: bool = ..., date_parser: (*args, **kwargs) -> Any | None = ..., dayfirst: bool = ..., cache_dates: bool = ..., iterator: Literal[True], chunksize: int | None = ..., compression: str | None = ..., thousands: str | None = ..., decimal: str | None = ..., lineterminator: str | None = ..., quotechar: str = ..., quoting: int = ..., doublequote: bool = ..., escapechar: str | None = ..., comment: str | None = ..., encoding: str | None = ..., dialect: str | None = ..., error_bad_lines: bool = ..., warn_bad_lines: bool = ..., delim_whitespace: bool = ..., low_memory: bool = ..., memory_map: bool = ..., float_precision: str | None = ...)
可以是文件路徑,可以是網(wǎng)頁(yè)上的文件,也可以是文件對(duì)象,實(shí)例如下:
# 文件路徑讀取 file_path=r"E:\VSCODE\2_numpy_pandas\pandas\Game_Data.csv" f_df = pd.read_csv(file_path,sep=",|:|;",engine="python",header=0,encoding='gbk') print(f_df) # 網(wǎng)頁(yè)上的文件讀取 f_df = pd.read_csv("http://localhost/data.csv") # 文件對(duì)象讀取 f = open(r"E:\VSCODE\2_numpy_pandas\pandas\Game_Data.csv", encoding="gbk") f_df = pd.read_csv(f)
讀取csv文件時(shí)指定的分隔符,默認(rèn)為逗號(hào)。注意:“csv文件的分隔符” 和 “我們讀取csv文件時(shí)指定的分隔符” 一定要一致。多個(gè)分隔符時(shí),應(yīng)該使用 | 將不同的分隔符隔開(kāi);例如:
f_df = pd.read_csv(file_path,sep=":|;",engine="python",header=0)
所有的空白字符,都可以用此來(lái)作為間隔,該值默認(rèn)為False, 若我們將其更改為 True 則所有的空白字符:空格,\t, \n 等都會(huì)被當(dāng)做分隔符;和sep功能相似;
這兩個(gè)功能相輔相成,header 用來(lái)指定列名,例如header =0,則指定第一行為列名;若header =1 則指定第二行為列名;有時(shí),我們的數(shù)據(jù)里沒(méi)有列名,只有數(shù)據(jù),這時(shí)候就需要names=[], 來(lái)指定列名;詳細(xì)說(shuō)明如下:
csv文件有表頭并且是第一行,那么names和header都無(wú)需指定;csv文件有表頭、但表頭不是第一行,可能從下面幾行開(kāi)始才是真正的表頭和數(shù)據(jù),這個(gè)時(shí)候指定header即可;csv文件沒(méi)有表頭,全部是純數(shù)據(jù),那么我們可以通過(guò)names手動(dòng)生成表頭;csv文件有表頭、但是這個(gè)表頭你不想用,這個(gè)時(shí)候同時(shí)指定names和header。先用header選出表頭和數(shù)據(jù),然后再用names將表頭替換掉,其實(shí)就等價(jià)于將數(shù)據(jù)讀取進(jìn)來(lái)之后再對(duì)列名進(jìn)行rename;
舉例如下:
names 沒(méi)有被賦值,header 也沒(méi)賦值:
file_path=r"E:\VSCODE\2_numpy_pandas\pandas\Game_Data.csv" df=pd.read_csv(file_path,sep=",|:|;",engine="python",header=0,encoding='gbk') print(df) # 我們說(shuō)這種情況下,header為變成0,即選取文件的第一行作為表頭
names 沒(méi)有被賦值,header 被賦值:
pd.read_csv(file_path,sep=",|:|;",engine="python",header=1,encoding='gbk') # 不指定names,指定header為1,則選取第二行當(dāng)做表頭,第二行下面的是數(shù)據(jù)
names 被賦值,header 沒(méi)有被賦值
pd.read_csv(file_path,sep=",|:|;",engine="python",encoding='gbk',names=["編號(hào)", "英雄", "游戲", "發(fā)行日期"])
names適用于沒(méi)有表頭的情況,指定names沒(méi)有指定header,那么header相當(dāng)于None。一般來(lái)說(shuō),讀取文件會(huì)有一個(gè)表頭的,一般是第一行,但是有的文件只是數(shù)據(jù)而沒(méi)有表頭,那么這個(gè)時(shí)候我們就可以通過(guò)names手動(dòng)指定、或者生成表頭,而文件里面的數(shù)據(jù)則全部是內(nèi)容。所以這里"編號(hào)", “角色”, “源于”, “發(fā)行日” 也當(dāng)成是一條記錄了,本來(lái)它是表頭的,但是我們指定了names,所以它就變成數(shù)據(jù)了,表頭是我們?cè)趎ames里面指定的
names和header都被賦值:
pd.read_csv(file_path,sep=",|:|;",engine="python",encoding='gbk',names=["編號(hào)", "英雄", "游戲", "發(fā)行日期"],header=0)
這個(gè)相當(dāng)于先不看names,只看header,我們說(shuō)header等于0代表什么呢?顯然是把第一行當(dāng)做表頭,下面的當(dāng)成數(shù)據(jù),好了,然后再把表頭用names給替換掉。
我們?cè)谧x取文件之后,生成的 DataFrame 的索引默認(rèn)是0 1 2 3…,我們當(dāng)然可以 set_index,但是也可以在讀取的時(shí)候就指定某個(gè)列為索引。
pd.read_csv(file_path,engine="python",encoding='gbk',header=0,index_col="角色")
這里指定 “name” 作為索引,另外除了指定單個(gè)列,還可以指定多個(gè)列,比如 [“id”, “name”]。并且我們除了可以輸入列的名字之外,還可以輸入對(duì)應(yīng)的索引。比如:“id”、“name”、“address”、“date” 對(duì)應(yīng)的索引就分別是0、1、2、3。
如果列有很多,而我們不想要全部的列、而是只要指定的列就可以使用這個(gè)參數(shù)。
pd.read_csv(file_path,encoding='gbk',usecols=["角色", "發(fā)行日"])
同 index_col 一樣,除了指定列名,也可以通過(guò)索引來(lái)選擇想要的列,比如:usecols=[1, 3] 也會(huì)選擇 “角色” 和 “發(fā)行日” 兩列,因?yàn)?“角色” 這一列對(duì)應(yīng)的索引是 1、“發(fā)行日” 對(duì)應(yīng)的索引是 3。
此外 use_cols 還有一個(gè)比較好玩的用法,就是接收一個(gè)函數(shù),會(huì)依次將列名作為參數(shù)傳遞到函數(shù)中進(jìn)行調(diào)用,如果返回值為真,則選擇該列,不為真,則不選擇。
# 選擇列名的長(zhǎng)度等于 3 的列,顯然此時(shí)只會(huì)選擇 發(fā)行日 這一列 pd.read_csv(file_path,encoding='gbk',usecols=lambda x:len(x)==3)
實(shí)際生產(chǎn)用的數(shù)據(jù)會(huì)很復(fù)雜,有時(shí)導(dǎo)入的數(shù)據(jù)會(huì)含有重名的列。參數(shù) mangle_dupe_cols 默認(rèn)為 True,重名的列導(dǎo)入后面多一個(gè) .1。如果設(shè)置為 False,會(huì)拋出不支持的異常:
# ValueError: Setting mangle_dupe_cols=False is not supported yet
prefix 參數(shù),當(dāng)導(dǎo)入的數(shù)據(jù)沒(méi)有 header 時(shí),設(shè)置此參數(shù)會(huì)自動(dòng)加一個(gè)前綴。比如:
pd.read_csv(file_path,encoding='gbk',header=None,prefix="角色")
有時(shí)候,工作人員的id都是以0開(kāi)頭的,比如0100012521,這是一個(gè)字符串。但是在讀取的時(shí)候解析成整型了,結(jié)果把開(kāi)頭的0給丟了。這個(gè)時(shí)候我們就可以通過(guò)dtype來(lái)指定某個(gè)列的類型,就是告訴pandas:你在解析的時(shí)候不要自以為是,直接按照老子指定的類型進(jìn)行解析就可以了,我不要你覺(jué)得,我要我覺(jué)得。
df=pd.read_csv(file_path,encoding='gbk',dtype={"編號(hào)": str})df["編號(hào)"]=df["編號(hào)"]*4
pandas解析數(shù)據(jù)時(shí)用的引擎,pandas 目前的解析引擎提供兩種:c、python,默認(rèn)為 c,因?yàn)?c 引擎解析速度更快,但是特性沒(méi)有 python 引擎全。如果使用 c 引擎沒(méi)有的特性時(shí),會(huì)自動(dòng)退化為 python 引擎。
比如使用分隔符進(jìn)行解析,如果指定分隔符不是單個(gè)字符、或者"\s+“,那么c引擎就無(wú)法解析了。我們知道如果分隔符為空白字符的話,那么可以指定delim_whitespace=True,但是也可以指定sep=r”\s+"。
df=pd.read_csv(file_path,encoding='gbk',dtype={"編號(hào)": str}) df["編號(hào)"]=df["編號(hào)"]*4
我們看到雖然自動(dòng)退化,但是彈出了警告,這個(gè)時(shí)候需要手動(dòng)的指定engine="python"來(lái)避免警告。這里面還用到了encoding參數(shù),這個(gè)后面會(huì)說(shuō),因?yàn)橐嬉坏┩嘶?,在Windows上不指定會(huì)讀出亂碼。這里我們看到sep是可以支持正則的,但是說(shuō)實(shí)話sep這個(gè)參數(shù)都會(huì)設(shè)置成單個(gè)字符,原因是讀取的csv文件的分隔符是單個(gè)字符。
可以在讀取的時(shí)候?qū)α袛?shù)據(jù)進(jìn)行變換:
pd.read_csv(file_path,encoding='gbk', converters={<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->"編號(hào)": lambda x: int(x) + 10})
將id增加10,但是注意 int(x),在使用converters參數(shù)時(shí),解析器默認(rèn)所有列的類型為 str,所以需要顯式類型轉(zhuǎn)換。
指定哪些值應(yīng)該被清洗為True,哪些值被清洗為False。
pd.read_csv(file_path,encoding='gbk',true_values=["林克","奎托斯","褪色者","葦名弦一羊"],false_values=["馬里奧"])
注意這里的替換規(guī)則,只有當(dāng)某一列的數(shù)據(jù)全部出現(xiàn)在true_values + false_values里面,才會(huì)被替換。例如執(zhí)行以下內(nèi)容,不會(huì)發(fā)生變化;
pd.read_csv(file_path,encoding='gbk',true_values=["林克"],false_values=["馬里奧"])
skiprows 表示過(guò)濾行,想過(guò)濾掉哪些行,就寫(xiě)在一個(gè)列表里面?zhèn)鬟f給skiprows即可。注意的是:這里是先過(guò)濾,然后再確定表頭,比如:
pd.read_csv(file_path,encoding='gbk',skiprows=[0])
我們把第一行過(guò)濾掉了,但是第一行是表頭,所以過(guò)濾掉之后,第二行就變成表頭了。如果過(guò)濾掉第二行,那么只相當(dāng)于少了一行數(shù)據(jù),但是表頭還是原來(lái)的第一行。
當(dāng)然里面除了傳入具體的數(shù)值,來(lái)表明要過(guò)濾掉哪些行,還可以傳入一個(gè)函數(shù)。
pd.read_csv(file_path,encoding='gbk',skiprows=lambda x:x>0 and x%2==1)
由于索引從0開(kāi)始,凡是索引2等于1的記錄都過(guò)濾掉。索引大于0,是為了保證表頭不被過(guò)濾掉。
從文件末尾過(guò)濾行,解析引擎退化為 Python。這是因?yàn)?C 解析引擎沒(méi)有這個(gè)特性。
pd.read_csv(file_path,encoding='gbk',skipfooter=2)
如果不想報(bào)以上的Warning, 可以將Engine 指定為Python, 如下:
skipfooter接收整型,表示從結(jié)尾往上過(guò)濾掉指定數(shù)量的行,因?yàn)橐嫱嘶癁閜ython,那么要手動(dòng)指定engine=“python”,不然會(huì)警告。
nrows 參數(shù)設(shè)置一次性讀入的文件行數(shù),它在讀入大文件時(shí)很有用,比如 16G 內(nèi)存的PC無(wú)法容納幾百 G 的大文件。
pd.read_csv(file_path,encoding='gbk',nrows=4)
很多時(shí)候我們只是想看看大文件內(nèi)部的字段長(zhǎng)什么樣子,所以這里通過(guò)nrows指定讀取的行數(shù)。
na_values 參數(shù)可以配置哪些值需要處理成 NaN,這個(gè)是非常常用的。
pd.read_csv(file_path,encoding='gbk',na_values=['馬里奧','戰(zhàn)神'])
我們看到將 ‘馬里奧’ 和 ‘戰(zhàn)神’ 設(shè)置成了NaN,當(dāng)然我們這里不同的列,里面包含的值都是不相同的。但如果兩個(gè)列中包含相同的值,而我們只想將其中一個(gè)列的值換成NaN該怎么做呢?通過(guò)字典實(shí)現(xiàn)只對(duì)指定的列進(jìn)行替換。以下的例子可以看到,戰(zhàn)神并沒(méi)有被替換成NaN, 因?yàn)樵诮巧餂](méi)有這個(gè)值;/
pd.read_csv(file_path,encoding='gbk',na_values={<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->"角色":['馬里奧','戰(zhàn)神'],'編號(hào)':[2]})
我們知道,通過(guò) na_values 參數(shù)可以讓 pandas 在讀取 CSV 的時(shí)候?qū)⒁恍┲付ǖ闹堤鎿Q成空值,但除了 na_values 指定的值之外,還有一些默認(rèn)的值也會(huì)在讀取的時(shí)候被替換成空值,這些值有: “-1.#IND”、“1.#QNAN”、“1.#IND”、“-1.#QNAN”、“#N/A N/A”、“#N/A”、“N/A”、“NA”、“#NA”、“NULL”、“NaN”、“-NaN”、“nan”、“-nan”、“” 。盡管這些值在 CSV 中的表現(xiàn)形式是字符串,但是 pandas 在讀取的時(shí)候會(huì)替換成空值(真正意義上的 NaN)。不過(guò)有些時(shí)候我們不希望這么做,比如有一個(gè)具有業(yè)務(wù)含義的字符串恰好就叫 “NA”,那么再將它替換成空值就不對(duì)了。
這個(gè)時(shí)候就可以將 keep_default_na
指定為 False
,默認(rèn)為 True
,如果指定為 False,那么 pandas 在讀取時(shí)就不會(huì)擅自將那些默認(rèn)的值轉(zhuǎn)成空值了,它們?cè)?CSV 中長(zhǎng)什么樣,pandas 讀取出來(lái)之后就還長(zhǎng)什么樣,即使單元格中啥也沒(méi)有,那么得到的也是一個(gè)空字符串。但是注意,我們上面介紹的 na_values 參數(shù)則不受此影響,也就是說(shuō)即便 keep_default_na
為 False,na_values 參數(shù)指定的值也依舊會(huì)被替換成空值。舉個(gè)栗子,假設(shè)某個(gè) CSV 中存在 “NULL”、“NA”、以及空字符串,那么默認(rèn)情況下,它們都會(huì)被替換成空值。但 “NA” 是具有業(yè)務(wù)含義的,我們希望保留原樣,而 “NULL” 和空字符串,我們還是希望 pandas 在讀取的時(shí)候能夠替換成空值,那么此時(shí)就可以在指定 keep_default_na 為 False 的同時(shí),再指定 na_values 為 ["NULL", ""]
是否進(jìn)行空值檢測(cè),默認(rèn)為 True,如果指定為 False,那么 pandas 在讀取 CSV 的時(shí)候不會(huì)進(jìn)行任何空值的判斷和檢測(cè),所有的值都會(huì)保留原樣。因此,如果你能確保一個(gè) CSV 肯定沒(méi)有空值,則不妨指定 na_filter 為 False,因?yàn)楸苊饬丝罩禉z測(cè),可以提高大型文件的讀取速度。另外,該參數(shù)會(huì)屏蔽 keep_default_na 和 na_values,也就是說(shuō),當(dāng) na_filter 為 False 的時(shí)候,這兩個(gè)參數(shù)會(huì)失效。
從效果上來(lái)說(shuō),na_filter 為 False 等價(jià)于:不指定 na_values、以及將 keep_default_na 設(shè)為 False。
skip_blank_lines 默認(rèn)為 True,表示過(guò)濾掉空行,如為 False 則解析為 NaN。
指定某些列為時(shí)間類型,這個(gè)參數(shù)一般搭配下面的date_parser使用。
是用來(lái)配合parse_dates參數(shù)的,因?yàn)橛械牧须m然是日期,但沒(méi)辦法直接轉(zhuǎn)化,需要我們指定一個(gè)解析格式:
from datetime import datetime pd.read_csv(file_path,encoding='gbk',parse_dates=['發(fā)行日'],date_parser=lambda x:datetime.strptime(x,'%Y/%m/%d'))
infer_datetime_format 參數(shù)默認(rèn)為 False。如果設(shè)定為 True 并且 parse_dates 可用,那么 pandas 將嘗試轉(zhuǎn)換為日期類型,如果可以轉(zhuǎn)換,轉(zhuǎn)換方法并解析,在某些情況下會(huì)快 5~10 倍。
iterator 為 bool類型,默認(rèn)為False。如果為True,那么返回一個(gè) TextFileReader 對(duì)象,以便逐塊處理文件。這個(gè)在文件很大、內(nèi)存無(wú)法容納所有數(shù)據(jù)文件時(shí),可以分批讀入,依次處理。
df=pd.read_csv(file_path,encoding='gbk',iterator=True) display(df.get_chunk(2)) """ 編號(hào) 角色 源于 發(fā)行日 0 1 馬里奧 超級(jí)馬里奧:奧德賽 2017/10/27 1 2 林克 塞爾達(dá)傳說(shuō):荒野之息 2017/3/3 """ print(chunk.get_chunk(1)) """ 編號(hào) 角色 源于 發(fā)行日 2 3 奎托斯 戰(zhàn)神 2018/4/20 """ # 文件還剩下三行,但是我們指定讀取10,那么也不會(huì)報(bào)錯(cuò),不夠指定的行數(shù),那么有多少返回多少 print(chunk.get_chunk(10)) """ 編號(hào) 角色 源于 發(fā)行日 3 4 褪色者 埃爾登法環(huán) 2022/2/25 4 5 葦名弦一羊 只狼 2019/3/22 """ try: # 但是在讀取完畢之后,再讀的話就會(huì)報(bào)錯(cuò)了 chunk.get_chunk(5) except StopIteration as e: print("讀取完畢") # 讀取完畢
chunksize 整型,默認(rèn)為 None,設(shè)置文件塊的大小。
chunk = pd.read_csv(file_path, sep="\t", chunksize=2) # 還是返回一個(gè)類似于迭代器的對(duì)象 # 調(diào)用get_chunk,如果不指定行數(shù),那么就是默認(rèn)的chunksize print(chunk.get_chunk()) """ 編號(hào) 角色 源于 發(fā)行日 0 1 馬里奧 超級(jí)馬里奧:奧德賽 2017/10/27 1 2 林克 塞爾達(dá)傳說(shuō):荒野之息 2017/3/3 """ # 但也可以指定 print(chunk.get_chunk(100)) """ 編號(hào) 角色 源于 發(fā)行日 2 3 奎托斯 戰(zhàn)神 2018/4/20 3 4 褪色者 埃爾登法環(huán) 2022/2/25 4 5 葦名弦一羊 只狼 2019/3/22 """ try: chunk.get_chunk(5) except StopIteration as e: print("讀取完畢") # 讀取完畢
compression 參數(shù)取值為 {‘infer’, ‘gzip’, ‘bz2’, ‘zip’, ‘xz’, None},默認(rèn) ‘infer’,這個(gè)參數(shù)直接支持我們使用磁盤(pán)上的壓縮文件。
# 直接將上面的.csv添加到壓縮文件,打包成game_data.zip pd.read_csv('game_data.zip', compression="zip",encoding='gbk')
千分位分割符,如 , 或者 .,默認(rèn)為None。
encoding 指定字符集類型,通常指定為 ‘utf-8’。根據(jù)情況也可能是’ISO-8859-1’,本文中所有的encoding='gbk'
,主要原因?yàn)椋何业臄?shù)據(jù)是用Excel 保存成.CSV的,默認(rèn)的編碼格式為GBK;
如果一行包含過(guò)多的列,假設(shè)csv的數(shù)據(jù)有5列,但是某一行卻有6個(gè)數(shù)據(jù),顯然數(shù)據(jù)有問(wèn)題。那么默認(rèn)情況下不會(huì)返回DataFrame,而是會(huì)報(bào)錯(cuò)。
我們?cè)谀骋恍兄卸嗉恿艘粋€(gè)數(shù)據(jù),結(jié)果顯示錯(cuò)誤。因?yàn)間irl.csv里面有5列,但是有一行卻有6個(gè)數(shù)據(jù),所以報(bào)錯(cuò)。
在小樣本讀取時(shí),這個(gè)錯(cuò)誤很快就能發(fā)現(xiàn)。但是如果樣本比較大、并且由于數(shù)據(jù)集不可能那么干凈,會(huì)很容易出現(xiàn)這種情況,那么該怎么辦呢?而且這種情況下,Excel基本上是打不開(kāi)這么大的文件的。這個(gè)時(shí)候我們就可以將error_bad_lines
設(shè)置為False
(默認(rèn)為True
),意思是遇到這種情況,直接把這一行給我扔掉。同時(shí)會(huì)設(shè)置 warn_bad_lines
設(shè)置為True,打印剔除的這行。
pd.read_csv(file_path,encoding='gbk',error_bad_lines=False, warn_bad_lines=True)
以上兩參數(shù)只能在C解析引擎下使用。
讀到這里,這篇“怎么使用Pandas進(jìn)行數(shù)據(jù)讀取”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。