由于工作的缘故,导入包是再常用不过的技能,哈哈
import os
os.getcwd()#获取当前位置的路径
os.chdir(r'D\E\ER') #切换到目的文件夹
确定好文件当前所在的位置之后,可以将位置转移到我们相导入数据的文件夹下,顺便展示一下相对位置和绝对位置导入数据的代码,无缝衔接;
这里,我先用read_csv看了以下表结构。果然是文件的后缀是啥,你就应该用啥长得像的方法。等一下我会试一下read_table这种方法,接着我就会开始叙说我的辛酸泪。搞不清参数的具体含义,你就会一直错下去,而不自知,说得就是我本人。
嗯,我开始跟read_table斗智斗勇了,原来sep一直代表得是分隔符,人家得英文名叫做sepration,我这个绝顶的人才把它写成了seq,对我以为是sequence。然后sep=‘\t’,嗯,我知道这个是制表符,我知道换行符。但是我竟把这个理所当然的看成分隔行的了,我还很虔诚地去百度——为什么read_table读csv文件读成一列,它告诉我是因为编码问题。然后我就斗智斗勇地和编码搞了半个小时,当然我是输了,毕竟读成一列的根本原因不是需要把编码utf-8改成ANSI,而是sep=','就完美了。后因前果展示出来,我也可以睡觉了。
接下来的任务是每一千行为一个数据模块,按块读取。我以为读出来的是个数据框,事实证明我是太年轻了,当然这个是假的。我试图去看这个按块读取出来的东西到底是不是一千行,报错会证明我的天真。
改表头名字我以为我很娴熟,然后发现竟然有一步到位的方法,就是直接用read_csv中的参数names,index_col=某一列,可以帮忙将这一列设置为索引列。
看起来虽然不好看,但是毕竟成功了。
走到看表结构信息的路上了,这个是我最喜欢做的事情了。嗯,数据分析路上,我们还是并行着的,我之前用的最多的是df.describe(),查看数值型变量的描述性统计分析。这里,代码应该是test_data.info(),我错把info当成数据框的一个属性了,其实应该是它的一个方法,罪过。
看前十行,看后十五行,我开始胡言乱语了,虽然我说的是对的。其实一般最常用的是df.head()查看数据框的前五列,df.tail()目前想到的是可以看数据框有多少行,但是如果目的只是要看数据框的行数,其实我们有最最简单的方法就是df.shape.
看各个值是否是缺失的,嗯,这个倒是很少用到。
最后一步是把变更处理过的数据表导出到本地,我大功告成了。
第一次写这么长的文章,我还要忙着洗漱,今天是没按点睡觉的一天。
第二天发现我这第一章任务只完成了一半,而且仅仅完成了数据载入的一部分,两眼一睁,我又来继续我的初步观察数据了。鉴于我这边没有现成的Tatanic的数据,就勉强拿了临时数据集来完成任务,毕竟我晚上还要完成第二章的任务,这个方法真是目前我能想到的最优解。
絮絮叨叨,嗯,pandas有两种数据类型,数据框DataFrame和序列Series.
import numpy as np
import pandas as pd
dict = {'A':[1, 2, 3, 4],'B':[2, 2, 3, 4]}
df = pd.DataFrame(dict)
series = pd.Series(dict)
print(type(df),type(series))
我举了一个把字典分别转换成DataFrame和Series的例子,我们来看一下结果:(摊手,只能我自己看了,由于一些限制)
补上了。看列名 df.columns
df.columns
看某列的项 df['A'].head() 或者 df.A.head()
df['A'].head(2)
df.A.head(2)
删除某列用del ,del df['A']
del df['A']
暂时隐藏某列 df.drop(['A']).head(),增加参数inplace=True即为删除某列,相当于将原数据给覆盖掉。
#暂时隐藏某列
df.drop(['A'],axis=1)
#删除某列
df.drop(['A'],inplace=True,axis=1)
噢 不小心发现我好像昨天确实把第一章第一小节给做完了,而且我今天在这个页面补的内容大部分是第二小节的。所以,就这样吧,第二篇文章少写点儿内容。