数据基本操作
1.逐块读取
格式:chunker=pd.read_csv('train.csv',chunksize=1000)
for i in chunker
print(i)
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.更改表头:
法一: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.删除/隐藏某列:
删除:del df['A']/df.drop(['A'],axis=1)
df=df.drop(['a'],axis=1)
(当axis=0时代表行,1代表列)
隐藏:df.drop(['列名'],axis=1)
9.数据筛选:
范围筛选:df=df[(df['Age']<50)&(df['Age']>10)]筛选在10-50的数据,并修改。
显示某行:df.loc[[行数],['列名']]
df.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.筛选极值:
1、python的max()/min()函数
max(表达式)
2、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()
条件分组:df['列名a'](要分组的列)=df['列名a'].apply(lambda x:'high'if int(x)>100 else 'low' if int(x)<50 else 'mid')
lambda函数:匿名函数,令x为列a中的元素,后续则是关于x的条件