亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

pandas讀取CSV文件時查看修改各列的數(shù)據(jù)類型格式

 更新時間:2019年07月07日 11:53:00   作者:真不會修電腦  
這篇文章主要介紹了pandas讀取CSV文件時查看修改各列的數(shù)據(jù)類型格式,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下

下面給大家介紹下pandas讀取CSV文件時查看修改各列的數(shù)據(jù)類型格式,具體內(nèi)容如下所述:

我們在調(diào)bug的時候會經(jīng)常查看、修改pandas列數(shù)據(jù)的數(shù)據(jù)類型,今天就總結(jié)一下:

1.查看:

   Numpy和Pandas的查看方式略有不同,一個是dtype,一個是dtypes

print(Array.dtype)
#輸出int64
print(df.dtypes)
#輸出Df下所有列的數(shù)據(jù)格式 a:int64,b:int64

2.修改

import pandas as pd
import numpy as np
df = pd.read_csv('000917.csv',encoding='gbk')
df = df[df['漲跌幅']!='None']
df['漲跌幅'] = df['漲跌幅'].astype(np.float64)

print(df[df['漲跌幅']>5])

ps:在Pandas中更改列的數(shù)據(jù)類型

先看一個非常簡單的例子:

a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']]
df = pd.DataFrame(a)

有什么方法可以將列轉(zhuǎn)換為適當(dāng)?shù)念愋??例如,上面的例子,如何將?和3轉(zhuǎn)為浮點數(shù)?有沒有辦法將數(shù)據(jù)轉(zhuǎn)換為DataFrame格式時指定類型?或者是創(chuàng)建DataFrame,然后通過某種方法更改每列的類型?理想情況下,希望以動態(tài)的方式做到這一點,因為可以有數(shù)百個列,明確指定哪些列是哪種類型太麻煩??梢约俣苛卸及嗤愋偷闹?。

解決方法

可以用的方法簡單列舉如下:

對于創(chuàng)建DataFrame的情形

如果要創(chuàng)建一個DataFrame,可以直接通過dtype參數(shù)指定類型:

df = pd.DataFrame(a, dtype='float') #示例1
df = pd.DataFrame(data=d, dtype=np.int8) #示例2
df = pd.read_csv("somefile.csv", dtype = {'column_name' : str})

對于單列或者Series

下面是一個字符串Seriess的例子,它的dtype為object:

>>> s = pd.Series(['1', '2', '4.7', 'pandas', '10'])
>>> s
0     1
1     2
2    4.7
3  pandas
4    10
dtype: object

使用to_numeric轉(zhuǎn)為數(shù)值。默認(rèn)情況下,它不能處理字母型的字符串'pandas':

>>> pd.to_numeric(s) # or pd.to_numeric(s, errors='raise')
ValueError: Unable to parse string

可以將無效值強制轉(zhuǎn)換為NaN,如下所示:

>>> pd.to_numeric(s, errors='coerce')
0   1.0
1   2.0
2   4.7
3   NaN
4  10.0
dtype: float64

如果遇到無效值,第三個選項就是忽略該操作:

>>> pd.to_numeric(s, errors='ignore')
# the original Series is returned untouched

對于多列或者整個DataFrame
如果想要將這個操作應(yīng)用到多個列,依次處理每一列是非常繁瑣的,所以可以使用DataFrame.apply處理每一列。

對于某個DataFrame:

>>> a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']]
>>> df = pd.DataFrame(a, columns=['col1','col2','col3'])
>>> df
 col1 col2 col3
0  a 1.2  4.2
1  b  70 0.03
2  x  5   0

然后可以寫:

df[['col2','col3']] = df[['col2','col3']].apply(pd.to_numeric)

那么'col2'和'col3'根據(jù)需要具有float64類型。

但是,可能不知道哪些列可以可靠地轉(zhuǎn)換為數(shù)字類型。在這種情況下,設(shè)置參數(shù):

df.apply(pd.to_numeric, errors='ignore')

然后該函數(shù)將被應(yīng)用于整個DataFrame,可以轉(zhuǎn)換為數(shù)字類型的列將被轉(zhuǎn)換,而不能(例如,它們包含非數(shù)字字符串或日期)的列將被單獨保留。

另外pd.to_datetime和pd.to_timedelta可將數(shù)據(jù)轉(zhuǎn)換為日期和時間戳。

軟轉(zhuǎn)換——類型自動推斷

版本0.21.0引入了infer_objects()方法,用于將具有對象數(shù)據(jù)類型的DataFrame的列轉(zhuǎn)換為更具體的類型。

例如,用兩列對象類型創(chuàng)建一個DataFrame,其中一個保存整數(shù),另一個保存整數(shù)的字符串:

>>> df = pd.DataFrame({'a': [7, 1, 5], 'b': ['3','2','1']}, dtype='object')
>>> df.dtypes
a  object
b  object
dtype: object

然后使用infer_objects(),可以將列'a'的類型更改為int64:

>>> df = df.infer_objects()
>>> df.dtypes
a   int64
b  object
dtype: object

由于'b'的值是字符串,而不是整數(shù),因此'b'一直保留。

astype強制轉(zhuǎn)換

如果試圖強制將兩列轉(zhuǎn)換為整數(shù)類型,可以使用df.astype(int)。

示例如下:

a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']]
df = pd.DataFrame(a, columns=['one', 'two', 'three'])
df
Out[16]: 
 one two three
0  a 1.2  4.2
1  b  70 0.03
2  x  5   0
df.dtypes
Out[17]: 
one   object
two   object
three  object
df[['two', 'three']] = df[['two', 'three']].astype(float)
df.dtypes
Out[19]: 
one    object
two   float64
three  float64

總結(jié)

以上所述是小編給大家介紹的pandas讀取CSV文件時查看修改各列的數(shù)據(jù)類型格式,希望對大家有所幫助,如果有任何疑問歡迎給我留言,小編會及時回復(fù)大家的!

相關(guān)文章

  • 剖析Django中模版標(biāo)簽的解析與參數(shù)傳遞

    剖析Django中模版標(biāo)簽的解析與參數(shù)傳遞

    這篇文章主要介紹了剖析Django中模版標(biāo)簽的解析與參數(shù)傳遞,Django是重多高人氣Python框架中最為著名的一個,需要的朋友可以參考下
    2015-07-07
  • Python DNS查詢放大攻擊實現(xiàn)原理解析

    Python DNS查詢放大攻擊實現(xiàn)原理解析

    這篇文章主要介紹了Python DNS查詢放大攻擊實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-10-10
  • python 利用opencv實現(xiàn)圖像網(wǎng)絡(luò)傳輸

    python 利用opencv實現(xiàn)圖像網(wǎng)絡(luò)傳輸

    這篇文章主要介紹了python 如何利用opencv實現(xiàn)圖像網(wǎng)絡(luò)傳輸,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11
  • Python發(fā)送郵件的實例代碼講解

    Python發(fā)送郵件的實例代碼講解

    在本篇文章里小編給大家整理的是關(guān)于Python發(fā)送郵件的實例代碼講解內(nèi)容,需要的朋友們可以參考下。
    2019-10-10
  • 使用Python發(fā)送郵件附件以定時備份MySQL的教程

    使用Python發(fā)送郵件附件以定時備份MySQL的教程

    這篇文章主要介紹了使用Python發(fā)送郵件附件以定時備份MySQL的教程,本文的示例基于CentOS,需要的朋友可以參考下
    2015-04-04
  • Python?pandas找出、刪除重復(fù)的數(shù)據(jù)實例

    Python?pandas找出、刪除重復(fù)的數(shù)據(jù)實例

    在面試中很可能遇到給定一個含有重復(fù)元素的列表,刪除其中重復(fù)的元素,下面這篇文章主要給大家介紹了關(guān)于Python?pandas找出、刪除重復(fù)數(shù)據(jù)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • 使用NumPy和pandas對CSV文件進行寫操作的實例

    使用NumPy和pandas對CSV文件進行寫操作的實例

    今天小編就為大家分享一篇使用NumPy和pandas對CSV文件進行寫操作的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 詳解Python中的相對導(dǎo)入和絕對導(dǎo)入

    詳解Python中的相對導(dǎo)入和絕對導(dǎo)入

    絕對導(dǎo)入是指跳過包內(nèi),直接搜索 sys.path ,在sys.path的基礎(chǔ)上進行我們的模塊搜索。相對導(dǎo)入是指先包內(nèi),再包外,再,,,那么下面這篇文章主要給大家介紹了Python中的相對導(dǎo)入和絕對導(dǎo)入,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • python?matplotlib繪圖過程中設(shè)置線條顏色實戰(zhàn)舉例

    python?matplotlib繪圖過程中設(shè)置線條顏色實戰(zhàn)舉例

    Matplotlib是一個用于數(shù)據(jù)可視化和創(chuàng)建交互式圖表的Python庫,下面這篇文章主要給大家介紹了關(guān)于python?matplotlib繪圖過程中設(shè)置線條顏色的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • Python yield生成器和return對比代碼實例

    Python yield生成器和return對比代碼實例

    這篇文章主要介紹了Python yield生成器和return對比代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04

最新評論