前言
Datawhale第28期组队学习来了!这次很幸运报名成功!我选择的是Datawhale开源学习项目——“动手学数据分析”,本次学习周期为8.15-8.26,在此记录本人初次接触数据分析的学习历程。基于教程写的比较详细,这里的记录只作为补充。
环境配置
笔者使用的软件实验环境为Win10系统,Anaconda3。 1、环境配置(Anaconda Prompt) (1)建立data-A的环境:conda create --name data-A python=3.8.5 然后输入 y (报错:Collecting package metadata (current_repodata.json): failed。解决:沿路径C:\Users\1207.condarc把清华源删除) (2)激活环境:conda activate data-A (3)安装jupyter、numpy、pandas conda install -c conda-forge jupyter 然后输入 y pip install numpy -i https://pypi.douban.com/simple/ pip install pandas -i https://pypi.douban.com/simple/
2、打开文件(Anaconda Prompt) 首先到下载好的文件夹路径(D盘)👉D:👉cd D:\hands-on-data-analysis 然后启动data-A环境👉conda activate data-A 然后使用👉jupyter notebook
3、关闭Jupyter 首先关闭jupyter的网页 然后在Anaconda Prompt中退出jupyter👉按键ctrl+C 然后退出data-A环境👉conda deactivate 退出cmd👉exit
学习路线
Task01:数据加载及探索性数据分析(8.16、8.17)
PS.Task01相关参考
1、数据载入及初步观察
思考: 1)pd.read_csv()和pd.read_table()的区别: pd.read_csv()(读入后它是一个4行12列的数组,每一个字符串作为一列) pd.read_table()(读入后它是一个4行1列的数组,每一行字符串作为为一列而不是每一个字符串,每个字符串之间有逗号相隔,表明每一行作为一个维度进行了存储) 👉用pd.read_table()读csv文件:pd.read_table('train.csv', sep=',') 思路:将pd.read_table()函数读文件的默认分隔符从“\t”改为“,”
2)chunkersize参数用来控制迭代数据分析的大小,作为每一个数据块的行数 chunker=pd.read_csv('train.csv',chunksize=400) 👉chunker(数据块)类型:print(type(chunker)) 👉用for循环打印出来: for piece in chunker: print(type(piece)) print(len(piece))
思路:有chunkersize参数可以进行逐块加载,本质就是将文本分成若干块,每次处理chunkersize行的数据,最终返回一个TextParser对象,对该对象进行迭代遍历,可以完成逐块统计的合并处理。
问题: 1)绝对路径导入数据出错(查路径:import os 、os.getcwd() ) 输入:df=pd.read_csv(‘D:\hands-on-data-analysis\第一单元项目集合\train.csv’) 解决:df=pd.read_csv(‘D:/hands-on-data-analysis/第一单元项目集合/train.csv’) 解决2:df=pd.read_csv(‘D:\hands-on-data-analysis\第一单元项目集合\train.csv’) 2)保存文件中文字体出现乱码 输入:df.to_csv(‘train_chinese.csv’) 解决:df.to_csv(‘train_chinese.csv’,encoding=‘GBK’)
2、pandas基础
思考 1)删除列的方法 test1=pd.read_csv(‘test_1.csv’) 法一:del👉del test1[‘a’] 法二:pop👉test1.pop(‘a’) 2)数据筛选后,对索引值的更改 midage=midage.reset_index(drop=True) 👉数据清洗时,会将带空值的行删除,此时DataFrame或Series类型的数据不再是连续的索引,可以使用reset_index()重置索引。 👉drop:在获得新的indexs时,原来的index变成数据列,保留下来。若不想保留原来的index,使用参数 drop=True,默认 False。 3)对比iloc和loc的异同 👉midage.loc[[100,105,108],[“Pclass”,“Name”,“Sex”]] 👉midage.iloc[[100,105,108],[2,3,4]]
3、探索性数据分析
思考 1)总结不同的排序方式 👉根据某一列值进行排序 (by——排列的列名;ascending——排序的方式:默认True升序、False降序) frame.sort_values(‘c’,ascending=True)——c列升序排列 frame.sort_values([‘a’,‘c’],ascending=False)——a、c列降序排列 👉根据索引进行排序 (axis——索引的方式:默认0按行索引、1按列索引) frame.sort_index()——按行索引升序排列 frame.sort_index(axis=1)——按列索引升序排列 frame.sort_index(axis=1,ascending=False)——按列索引降序排序 2)describe 函数用于观察数据基本信息 count : 样本数据大小 mean : 样本数据的平均值 std : 样本数据的标准差 min : 样本数据的最小值 25% : 样本数据25%的时候的值 50% : 样本数据50%的时候的值 75% : 样本数据75%的时候的值 max : 样本数据的最大值 👉看看泰坦尼克号数据集中票价这列数据的基本统计数据:text["票价"].describe() 基本信息: 共891个票价数据, 平均值约为:32.20, 标准差约为49.69,说明票价波动特别大, 25%的人的票价是低于7.91的,50%的人的票价低于14.45,75%的人的票价低于31.00, 票价最大值约为512.33,最小值为0。 结果表明:入住高价船舱/享有优质服务的是少部分人,大部分人享有中下等服务。 👉看看泰坦尼克号数据集中父母子女个数 这列数据的基本统计数据: text["父母子女个数"].describe() 基本信息: 共891个数据, 平均值约为:0.3916(如果每个人至少有一个家眷,则平均值大于1), 标准差约为0.8061,说明波动不大, 25%、50%、75%的人父母子女个数为0, 最大值为6。 结果表明:说明泰坦尼克号这趟旅途大多数人是孤身前往的。 问题 1)输入包含中文字体文件:text=pd.read_csv(‘train_chinese.csv’) 报错:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xb3 in position 0: invalid start byte 解决:text=pd.read_csv(‘train_chinese.csv’,encoding=‘GBK’)
-----------------------------------↓↓未完待续↓↓------------------------------
Task02:数据清洗及特征处理
Task03:数据重构
Task04:数据可视化
Task05:数据建模及模型评估
|