一、载入数据,导入相关库
利用python入门中的知识导入库。
载入数据:
df=pd.read_csv('路径')
二、数据基本操作
1.逐块读取
格式:chunker=pd.read_csv('train.csv',chunksize=1000)
for i in chunker:
print(i)
read_csv与read_table对比:
csv得到的表格对齐,分隔符为逗号,而table按每行输出,上下对应但不对齐,分隔符为制表符'\t'。可以通过在括号内添加sep=','/sep='\t'相互转化。
csv与tsv对比:
tsv文件以制表符为分隔符,标准格式下,字段值之中不允许出现制表符。而csv文件以半角逗号为分隔符(也可以是逗号、其他字符、字符串)。
2.查看基本信息(总列数,非空值数量,数据类型等):df.info()
3.查看前/后几列数据(2):df.head()/df.tail()
4.判断数据是否为空:df.isnull()
5.保存数据:df.to_csv()
6.查看列名:全部——df.columns
某A列(2)——df['A']/df.A
7.更改表头(2)
法一:df=pd.read_csv('train.csv',names=['表头1','表头2',....],index_col='',header=0)
index_col更改索引,header确定替换列名为第几行。
法二:创建字典,
column={'header1':'表头1','header2':'表头2',.....}
df.rename(columns=column,inplace=True)
(inplace=True时,直接在原始数据上进行重命名操作;=False时,返回重命名后新的DateFrame,原始数据不变)
8.删除/隐藏某列(2):删除:del df['A']/df.drop(['A'],axis=1)
df=df.drop(['a'],axis=1)
(当axis=0时代表行,1代表列)
隐藏:df.drop(['列名'],axis=1)
对比:del直接删除,drop需要再赋值才可(df=..drop..),否则并不改动原数据(即隐藏),del若想实现“隐藏”,需要分别保存改动前后的数据。
9.数据筛选:
范围筛选:df=df[(df['Age']<50)&(df['Age']>10)]筛选在10-50的数据,并修改。
显示某行(2):df.loc[[行数],['列名']]
df.iloc[[行数],['列数']]
对比:loc通过列名实现,iloc通过索引位置实现筛选
(若在排序、分组、删除等操作后,要对修改后数据筛选,注意使用reset_index()重置索引。)
10.构建frame:
frame=pd.DataFrame(np.arange(12).reshape(3,4),(构建从0-11,3行4列的矩阵)
index=['1','0','2'],(行索引)
columns=['X','B','F','G'])(列索引)
对比数据结构DataFrame和Series:
DataFrame(二维)每列可以有不同的数据类型,Series(一维)仅有一种数据类型。
11.数据排序:根据索引排序:frame.sort_index(axis=1,asxending=False,inplace='True')(axis=1为列,ascending中False为降序,默认axis=0,升序排序。inplace默认False,若想改变原数据,需写成True,以下同理)
根据值排序:frame.sort_value(by='列名',ascending='',inplace='')(不接受axis参数)
12.算术运算(这里仅简单记录加法):+:frame_1['列名']+frame_2['列名']或使用apply函数:
df1.apply(lambda row:row['列名']+row['列名'],axis=1)
13.筛选极值(2):法一:python的max()/min()函数:max(表达式)
法二:df.max()(若对象为DataFrame或Series)
14.describe查看数据基本信息:df.describe()
count : 样本数据大小
mean : 样本数据的平均值
std : 样本数据的标准差
min : 样本数据的最小值
25% : 样本数据25%的时候的值
50% : 样本数据50%的时候的值
75% : 样本数据75%的时候的值
max : 样本数据的最大值
15.筛选非空行/空行:
single=df[df['列名a'].isnull()](single为a为空的列)
single=df[df['列名b'].isnull()](dual为a不为空的列)
16.重复数据删除:
例:df.drop_duplicates('列名a',keep='first')
(相同列名a保留第一条)
17.数据分组:
种类分组:group=df.groupby(['列名a','列名b']).size()(若想统计各组个数就加后面的size,否则不用)
条件分组:例:df['列名a'](要分组的列)=df['列名a'].apply(lambda x(lambda函数:匿名函数,令x为列a中的元素,后续则是关于x的条件):'high'if int(x)>100 else 'low' if int(x)<50 else 'mid')