指定列数据类型 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'