pandas入门
csv文件
(与excel类似)
载入数据
相对路径:当前工作目录,直接名称
绝对路径:相应文件在电脑中的位置(因为转义符报错,加r,字符r的功能:取消转义)
定义df=pd.read(读取)_csv(类型)+路径
分块获取数据
用chunk分块函数:读取数据,然后补充chunksize,for循环读取输出(chunker:数据块类型变量)
更换表头(中英文互换)
用names列表列出新表头(注意是从后往前填充的),改索引:index_col=,把表头改成默认第一行,即刚输入的列表。(直接当成列表赋值的思路)
用rename函数:df.rename(columns={‘PASSENGERS ID’:‘乘客ID’…},inplace=True)
初步观察
基本信息
df.info()
查看前几行后几行
df.head(行数) df.tail(行数)
查看数据是否为空
df.isnull().head(行数)
数据类型
series:一维索引,一一对应(两组相关数据)
DataFrame:表格型包含一组有序的列,有行索引也有列索引,每列可以是不同的值类型,可以看作字典
查看每列的名称
df.columns(英译)
查看固定列的值
df[‘该列名称’](.前几行后几行范围)or df.该列名称
删除特定列
del test1['a']
test1.drop('a',axis=1)
隐藏特定列
df.drop(['PassengerId','Name','Age','Ticket'],axis=1)
筛选(iloc与loc)
大小关系筛选
midage = df[(df['Age']>10)&(df['Age']<50)]
用iloc和loc显示指定行数指定元素
用loc显示特定行:
单行:midage.loc[[100],[‘Pclass’,‘Sex’]]
多行:midage.loc[[100,105,108],[‘Pclass’,‘Name’,‘Sex’]]
用iloc显示特定行:
多行:midage.iloc[[100,105,108],[2,3,4]]
iloc与loc的不同:
loc通过行、列的名称或标签进行索引
iloc通过行、列的索引位置(数字)来寻找数据
深入探索数据
按行、列索引升序
frame.sort_index()列加(axis=1)
按行列索引降序
frame.sort_index(axis=1,ascending=False)(加ascending=False)
任选两列降序or升序
frame.sort_values(by=['a','c'],ascending=False)(by=['对应列'])
将两组数据相加
直接相加:空的显示
查看基本统计信息
df.describe()
count : 样本数据大小
mean : 样本数据的平均值
std : 样本数据的标准差
min : 样本数据的最小值
25% : 样本数据25%的时候的值
50% : 样本数据50%的时候的值
75% : 样本数据75%的时候的值
max : 样本数据的最大值
作业讲解部分
筛选一列为空值的数据并分别存储
single = df[df['属性2'].isnull()]
single.drop(columns=['属性2'],inplace=True)
single.to_csv('./single.csv',index=False)
dual = df[df['属性2'].notnull()]
dual.to_csv('./dual.csv',index=False)
将重复的列只保留第一次出现的行,并求出第一属性的种群数量
df.drop_duplicates('全国图鉴编号',keep='first')
print(df['属性1'].nunique())
求第一属性和第二属性的组合数量
data=df.groupby(['属性1','属性2']).size()
data
或
data=dual.drop_duplicates(['属性1','属性2'])
data[['属性1','属性2']].value_counts()
将体力值超过一百的替换为high,低于50的替换为low,剩余的替换为mid
data = df.copy()
for i in range(len(data)):
s = data.loc[i,'体力']
if int(s)>100:
data.loc[i,'体力']=high
elif int(s)<50:
data.loc[i,'体力']=low
else:
data.loc[i,'体力']=mid
或使用lambda函数
df['体力']=df['体力'].apply(lambda x:'high' if int(x)>100 else 'low' if int(x)<50 else)
lambda函数
lambda [arg1 [,arg2,…argn]]:expression
将x作为lambda的参数