数据加载
载入数据
-
绝对路径就是文件的真正存在的路径,是指从硬盘的根目录(盘符)开始,一级级目录指向文件。
-
相对路径就是以当前文件为基准,一级级目录指向被引用的资源文件。
-
路径查看
import os
os.getcwd()
相对路径载入数据
# 在同一文件夹
df = pd.read_csv('test_1.csv')
绝对路径载入数据
df = pd.read_csv(r'C:\Users\crc\Desktop\20200819-python学习\动手学数据分析-组队学习版\第一单元项目集合\test_1.csv')
报错
中间报错:SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: tr
解决办法:路径前加 r
中间报错:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xb5 in position 0: invalid start
解决办法:
#-*- coding : utf-8-*-
# coding:unicode_escape
import pandas as pd
import numpy as np
data= pd.read_csv(r'C:\Users\user\Documents\DATA_LABELS.csv', delimiter="\t",encoding="gbk")
https://blog.csdn.net/qq_35892623/article/details/82941473
中间报错:Pandas读取CSV错误:Error tokenizing data. C error: Expected 1 fields in line **, saw **
解决办法:
pd.read_csv(filename, delimiter="\t")
https://blog.csdn.net/fulin9452/article/details/103228720
pd.read_csv()和pd.read_table()的不同
函数 | 说明 |
---|---|
pd.read_csv() | 从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为逗号 |
pd.read_table() | 从文件、URL、文件型对象中加载带分隔符的数据。默认分隔符为制表符“\t” |
如果想pd.read_csv()和pd.read_table()效果一样,需要怎么做?
指定分隔符
pd.read_table('', sep=',')
了解一下’.tsv’和’.csv’的不同,如何加载这两个数据集?
TSV文件和CSV的文件的区别是:前者使用\t作为分隔符,后者使用,作为分隔符。
pd.read_csv('test.tsv', sep='\t')
读取数据
【思考】什么是逐块读取?为什么要逐块读取呢?
处理大文件时,只需要读取文件的一小部分或逐块对文件进行迭代
#读取前1000行数据
pd.read_csv('train.csv',nrows=1000)
迭代读取 – 不懂
chunker = pd.read_csv('train.csv',chunksize=1000)
for chunker in df:
print(chunker)
表头改为中文,索引改成乘客ID
df = pd.read_csv('train.csv', names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母子女个数','船票信息','票价','客舱','登船港口'],index_col='乘客ID',header=0)
初步观察
导入数据后,你可能要对数据的整体结构和样例进行概览,比如说,数据大小、有多少列,各列都是什么格式的,是否包含null等
查看数据的基本信息
df.head(n) 查看DataFrame对象的前n行
df.tail(n) 查看DataFrame对象的最后n行
df.shape 查看数据的行列数各是多少
df.info() 查看索引、数据类型和内存信息
df.describe(percentiles=[.05, .25, .75, .95]) 查看数值型列的汇总统计,返回计数、均值、标准差、最小最大值、25%50%75%分位数,percentiles0.05,0.95分位数
df.unique() 快速查看数据列有哪些分类内容,类似groupby
s.value_counts(dropna=False) 查看Series对象的唯一值和计数
df.apply(pd.Series.value_counts) 查看DataFrame对象中每一列的唯一值和计数
df.sum() 返回所有列的求和值
df.mean() 返回所有列的均值
df.corr() 返回列与列之间的相关系数
df.count() 返回每一列中的非空值的个数
df.max() 返回每一列的最大值
df.min 返回每一列的最小值
df.median() 返回每一列的中位数
df.std() 返回每一列的标准差
保存数据
df.to_csv('train_chinese1.csv')
探索性数据分析
任务:对泰坦尼克号数据(trian.csv)按票价和年龄两列进行综合排序(降序排列),从数据中你能发现什么
df.sort_values(by=['票价', '年龄'], ascending=False)
任务:通过泰坦尼克号数据如何计算出在船上最大的家族有多少人?
max(df['兄弟姐妹个数']+df['父母子女个数'])
参考资料
- 在Python中以绝对路径或者相对路径导入文件的方法https://blog.csdn.net/xiongchengluo1129/article/details/80453599
- 运行python文件报SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: tr
https://blog.csdn.net/xd060606/article/details/87164798 - 利用python进行数据分析
- Pandas读取tsv文件
https://zgljl2012.com/python-pandasdu-qu-tsvwen-jian/