动手学数据分析—Task1

载入数据

常用函数

常用的是read_csv()read_table()
不同点:read_csv()默认分隔符是",",read_table()默认分隔符是"\t",两者设置seq或delimiter参数值即可
读取相同的文件。

文件类型

“.tsv"和”.csv"的不同:’.tsv’文件是用"\t"作为字段值的分隔符,’.csv’文件是用","作为字段值的分隔符。读取这两类文件时,注意设置seq或delimiter参数值。

逐块读取

逐块读取是按照指定的行数来多次读取数据,而不是一次性将所有行的数据读取。当遇到数据量很大的时候,如果直接读取数据到python内存中,可能会出现内存不足的情况,从而导致数据读取失败,即使没有失败,后续的操作也会很吃力。

如何设置逐块读取?

read_csv()函数设置参数chunksize=size用于指定每次读取多少行,或者设置参数iterator=True,返回的都是可迭代对象TextFileReader,用for循环打印出来的是DataFrame类型的数据结构。

如何进行逐块读取?

以设置参数iterator=True的情况为例(设置参数chunksize=size的情况是一样的)

df = pd.read_csv(path, iterator=True)
loop = True
chunksize = 1000
chunks = []
while loop:
    try:
        chunk = df.get_chunk(chunksize)
        chunks.append(chunk)
    except StopIteration:
        loop = False 
df = pd.concat(chunks, ignore_index=True)

数据的删查改

删除某一列数据

del data['column_name']
data.drop[labels=['column_name'], axis=1, inplace=True]

查看数据

查看数据的基本信息

data.info() #查看数据基本信息
data.describe() #查看描述性统计信息
data.values #查看数据
data.columns #查看列标签
data.index #查看索引
data.shape #查看行数列数
data.dtypes # 查看每个字段的数据类型
data.head() #查看数据的前5行
data.tail() #查看数据的后5行
# 查看数据是否为空,为空返回True,否则返回False
data.isna()
pd.isnull(data) 

筛选满足条件的数据

data[condition]

修改数据

修改字段名

# 第一种方法
pd.read_csv(path,  names=['new_field1','new_field2','new_field3',...])
# 第二种方法
data.rename(columns={
    'field1': 'new_field1',
    'field2': 'new_field2',
    'field3': 'new_field3',
    ...
},inplace=True)
# 第三种方法
data.columns=['new_field1','new_field2','new_field3',...]

修改索引

# 第一种方法
pd.read_csv(path, index_col='field_name')
# 第二种方法
data.set_index('field_name', inplace=True)

重置索引

data.reset_index(drop=True, inplace=True)

保存数据

# 不同的操作系统需要设置参数encoding不同的值,如encoding='GBK' 或者 encoding = 'utf-8'
data.to_csv(path, index=False, encoding='GBK')

Series和DataFrame的区别

Series是一种类似于一维数组的对象,由一组数据和与之相关的数据标签(索引)组成。
DataFrame是一个表格型的数据结构,相当于是一个二维数组,含有一组有序的列,它可以看做是由Series组成的字典,并且共用一个索引。

iloc[]loc[]的区别

loc是基于元素的索引器
iloc是基于位置的索引器

排序

根据某列数据进行排升序

data.sort_values(by="column_name", ascending=True)

行索引升序排序

data.sort_index()

列索引升序排序

data.sort_index(axis=1)

DataFrame的加减乘除运算

两个DataFrame相加后,会返回一个新的DataFrame,对应的行和列的值会相加,没有对应的会变成空值NaN。其他算术运算也是如此。

df_a + df_b
浙ICP备19012682号