pandas21 读csv文件read_csv(3.dtypes指定列数据类型)(详细 tcy)

指定列数据类型 2018/12/27
目录:
第1部分:csv文本文件读写

    pandas 读csv文件read_csv(1.文本读写概要)https://mp.csdn.net/postedit/85289371
    pandas 读csv文件read_csv(2.read_csv参数介绍)https://mp.csdn.net/postedit/85289928
    pandas 读csv文件read_csv(3.dtypes指定列数据类型)https://mp.csdn.net/postedit/85290575
    pandas 读csv文件read_csv(4.to_csv文本数据写)https://mp.csdn.net/postedit/85290962
    pandas 读csv文件read_csv(5.文本数据读写实例)https://mp.csdn.net/postedit/85291123
    pandas 读csv文件read_csv(6.命名和使用列)https://mp.csdn.net/postedit/85291430
    pandas 读csv文件read_csv(7.索引)https://mp.csdn.net/postedit/85291658
    pandas 读csv文件read_csv(8.方言和分隔符)https://mp.csdn.net/postedit/85291994
    pandas 读csv文件read_csv(9.浮点转换和NA值)https://mp.csdn.net/postedit/85292391
    pandas 读csv文件read_csv(10.注释和空行)https://mp.csdn.net/postedit/85292609
    pandas 读csv文件read_csv(11.日期时间处理) https://mp.csdn.net/postedit/85292925
    pandas 读csv文件read_csv(12.迭代和块)https://mp.csdn.net/postedit/85293639
    pandas 读csv文件read_csv(13.read_fwf读固定宽度数据)https://mp.csdn.net/postedit/85294010
    
第2部分:
    pandas hdf文件读写简要https://mp.csdn.net/postedit/85294299
    pandas excel读写简要https://mp.csdn.net/postedit/85294545
    
第3部分:
    python中csv模块用法tcy https://mp.csdn.net/postedit/85228189
    pandas读csv文件read_csv错误解决办法7种https://mp.csdn.net/postedit/85228808
    pandas to_string用法https://mp.csdn.net/postedit/85294935


 

实例: 
# 实例1:usecols返回数据列的子集
# 使用此参数可以大大加快解析时间并降低内存使用率。
data = 's1,s2,s3\na,b,1\na,b,2\nc,d,3'
pd.read_csv(StringIO(data))
pd.read_csv(StringIO(data), usecols=lambda x: x.upper() in ['S1', 's3'])
# s1
# 0 a
# 1 a
# 2 c

# 实例2:skiprows跳过指定行
pd.read_csv(StringIO(data), skiprows=lambda x: x % 2 != 0)#仅读取第2行数据 
# 实例3:指定列数据类型 
data = 'a,b,c\n1,2,3\n4,5,6\n7,8,9'
df = pd.read_csv(StringIO(data), dtype=object)#指定每列数据都为str
df = pd.read_csv(StringIO(data), dtype={'b': object, 'c': np.float64})
df.dtypes # a int64, b object, c float64 
# 实例4:列跟函数之间的映射{'col_1': str}会对列索引为col_1列的所有值应用函数str 
data = "A1\n1\n2\n'A'\n4.22"
df = pd.read_csv(StringIO(data), converters={'A1': str})

#    A1
# 0  1
# 1  2
# 2 'A'
# 3  4.22

df['A1'].apply(type).value_counts()

# <class 'str'> 4
# Name: A1, dtype: int64

#排除数据异常:                                      #to_numeric()在读取数据后来强制执行dtypes
df2 = pd.read_csv(StringIO(data))
df2['A1'] = pd.to_numeric(df2['A1'], errors='coerce')#有效解析转换为浮点数无效的保留为NaN 
注意
# 在某些情况下,使用包含混合dtypes的列读取异常数据将导致数据集不一致。
# 如果依靠pandas来推断列的dtypes,解析引擎将推断数据的不同块的dtypes,而不是一次推断整个数据集。
# 因此,您最终可能会得到具有混合dtypes的列。

df = pd.DataFrame({'A1': list(range(1000000)) + ['a', 'b'] + list(range(1000000))})
df.to_csv('foo.csv')
mixed_df = pd.read_csv('foo.csv')
mixed_df['A1'].apply(type).value_counts()

# <class 'int'> 1737858
# <class 'str'> 262144
# Name: A1, dtype: int64

mixed_df['A1'].dtype#dtype('O') 
# 实例5:Categorical分类数据 
# dtype='category',结果类别将始终被解析为字符串;无序
# 使用该to_numeric()函数或to_datetime()转换到其他类型

data = 'col1,col2,col3\na,b,1\na,b,2\nc,d,3'

pd.read_csv(StringIO(data), dtype='category').dtypes          #作为分类数据读出
pd.read_csv(StringIO(data), dtype={'col1': 'category'}).dtypes#指定各列数据类型;无序

#作为分类数据读出-有序
from pandas.api.types import CategoricalDtype

dtype = CategoricalDtype(['d', 'c', 'b', 'a'], ordered=True)  #将意外值 视为缺失值
pd.read_csv(StringIO(data), dtype={'col1': dtype}).dtypes

# col1 category
# col2 object
# col3 int64
# dtype: object 

实例6:encoding参数: 

data = b'word,length\nTr\xc3\xa4umen,7\nGr\xc3\xbc\xc3\x9fe,5'.decode('utf8').encode('latin-1')
df = pd.read_csv(BytesIO(data), encoding='latin-1')
      word   length
0  Träumen     7
1    Grüße     5

df['word'][1]# 'Grüße'  

猜你喜欢

转载自blog.csdn.net/tcy23456/article/details/85290575