“ 顺序:1生成数据表-2数据表检查-3数据表清洗-4数据表预处理-5数据提取-6数据筛选-7数据汇总-8数据统计-9数据输出
进度:完成1、9。”

01
—
数据表检查
表格还是用上篇的表格Python-60 pandas之excel/csv/sql/spss读写

1、数据维度(行列):变量.shape
data.shapeOut[20]: (7, 5)
2、查看数据表的整体信息包括数据维度,列名称,数据格式和所占空间等信息:变量.info()
data.info()<class 'pandas.core.frame.DataFrame'>RangeIndex: 7 entries, 0 to 6Data columns (total 5 columns):# Column Non-Null Count Dtype--- ------ -------------- -----0 cno 7 non-null int641 cname 7 non-null object2 cpno 5 non-null float643 ccredit 7 non-null int644 result 7 non-null objectdtypes: float64(1), int64(2), object(2)memory usage: 408.0+ bytes
3、数据格式:变量.dtypes,指定列变量['列名].dtypes
data.dtypesOut[22]:cno int64cname objectcpno float64ccredit int64result objectdtype: object
4、检验空值:变量.isnull(),指定列变量['列名].isnull()。检测非空值:变量.notna()
data['cpno'].isnull()Out[23]:0 False1 True2 False3 False4 False5 True6 FalseName: cpno, dtype: bool
5、查看唯一值:变量['列名].unique(),限列。似与 Excel 中删除重复项后的结果
data['ccredit'].unique()Out[25]: array([4, 2, 3], dtype=int64)
6、查看数据表的值:变量.values
data.valuesOut[26]:array([[1, '数据库', 5.0, 4, '对'],[2, '数学', nan, 2, '错'],[3, '信息系统', 1.0, 4, '对'],[4, '操作系统', 6.0, 3, '错'],[5, '数据结构', 7.0, 4, '对'],[6, '数据处理', nan, 2, '错'],[7, 'PASCAL语言', 6.0, 4, '错']], dtype=object)
7、查看列名:变量.columns
data.columnsOut[27]: Index(['cno', 'cname', 'cpno', 'ccredit', 'result'], dtype='object')
8、查看前 N 行:变量.head()
data.head(2)Out[28]:cno cname cpno ccredit result0 1 数据库 5.0 4 对1 2 数学 NaN 2 错
9、查看后 N 行:变量.tail()
data.tail(4)Out[29]:cno cname cpno ccredit result3 4 操作系统 6.0 3 错4 5 数据结构 7.0 4 对5 6 数据处理 NaN 2 错6 7 PASCAL语言 6.0 4 错
10、查看索引:变量.index
data.indexOut[30]: RangeIndex(start=0, stop=7, step=1)
11、数据转置:变量.T
data.TOut[31]:0 1 2 3 4 5 6cno 1 2 3 4 5 6 7cname 数据库 数学 信息系统 操作系统 数据结构 数据处理 PASCAL语言cpno 5.0 NaN 1.0 6.0 7.0 NaN 6.0ccredit 4 2 4 3 4 2 4result 对 错 对 错 对 错 错

02
—
数据表清洗
主要内容包括对空值,大小写问题,数据格式和重复值的处理。
一、处理空值
1、删除:变量.dropna( axis = 0 , how = 'any' , thresh = None , subset = None , inplace = False )
axis:0 或 'index' :删除包含缺失值的行。1 或 'columns' :删除包含缺失值的列
how:'any' :如果存在任何 NA 值,则删除该行或列。'all' :如果所有值都是 NA,则删除该行或列。
subset,列表,定义在哪些列中查找缺失值
thresh,只保留至少有 N个非 NA 值的行。
data.dropna(how="any")Out[33]:cno cname cpno ccredit result0 1 数据库 5.0 4 对2 3 信息系统 1.0 4 对3 4 操作系统 6.0 3 错4 5 数据结构 7.0 4 对6 7 PASCAL语言 6.0 4 错
2、填充:变量.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)
method:pad ffill:向后填充;backfill bfill:向前填充
limit:限制填充量
data.fillna(method="bfill")Out[35]:cno cname cpno ccredit result0 1 数据库 5.0 4 对1 2 数学 1.0 2 错2 3 信息系统 1.0 4 对3 4 操作系统 6.0 3 错4 5 数据结构 7.0 4 对5 6 数据处理 6.0 2 错6 7 PASCAL语言 6.0 4 错data.fillna(method="pad")Out[36]:cno cname cpno ccredit result0 1 数据库 5.0 4 对1 2 数学 5.0 2 错2 3 信息系统 1.0 4 对3 4 操作系统 6.0 3 错4 5 数据结构 7.0 4 对5 6 数据处理 7.0 2 错6 7 PASCAL语言 6.0 4 错
二、大小写转换:变量["列名"]=变量["列名"].str.uper/lower()
data["cname"]=data["cname"].str.lower()dataOut[99]:cno cname cpno ccredit result0 1 数据库 5.0 4 对1 2 数学 NaN 2 错2 3 信息系统 1.0 4 对3 4 操作系统 6.0 3 错4 5 数据结构 7.0 4 对5 6 数据处理 NaN 2 错6 7 pascal语言 6.0 4 错
三、更改数据格式:变量['列名']=变量['列名'].astype('string')
data['cno']Out[101]:0 11 22 33 44 55 66 7Name: cno, dtype: int64data['cno'].astype('string')Out[103]:0 11 22 33 44 55 66 7Name: cno, dtype: string
四、更改列名:变量.rename(columns={'旧':'新'})
data.rename(columns={'ccredit':'分数'})Out[104]:cno cname cpno 分数 result0 1 数据库 5.0 4 对1 2 数学 NaN 2 错2 3 信息系统 1.0 4 对3 4 操作系统 6.0 3 错4 5 数据结构 7.0 4 对5 6 数据处理 NaN 2 错6 7 pascal语言 6.0 4 错
五、删除重复值:变量.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False)
subset:列标签或标签序列,可选。仅考虑用于识别重复项的某些列,默认情况下使用所有列。
keep:确定要保留哪些重复项(如果有)。- first: 除第一次出现外,删除重复项。- last: 除最后一次出现外,删除重复项。- False : 删除所有重复项
inplace:是将重复项放置到位还是返回副本
dataOut[107]:cno cname cpno ccredit result0 1 数据库 5.0 4 对1 2 数学 NaN 2 错2 3 信息系统 1.0 4 对3 4 操作系统 6.0 3 错4 5 数据结构 7.0 4 对5 6 数据处理 NaN 2 错6 7 pascal语言 6.0 4 错data['ccredit']=data['ccredit'].drop_duplicates()dataOut[109]:cno cname cpno ccredit result0 1 数据库 5.0 4.0 对1 2 数学 NaN 2.0 错2 3 信息系统 1.0 NaN 对3 4 操作系统 6.0 3.0 错4 5 数据结构 7.0 NaN 对5 6 数据处理 NaN NaN 错6 7 pascal语言 6.0 NaN 错data.drop_duplicates(subset=['ccredit'])Out[110]:cno cname cpno ccredit result0 1 数据库 5.0 4.0 对1 2 数学 NaN 2.0 错2 3 信息系统 1.0 NaN 对3 4 操作系统 6.0 3.0 错dataOut[111]:cno cname cpno ccredit result0 1 数据库 5.0 4.0 对1 2 数学 NaN 2.0 错2 3 信息系统 1.0 NaN 对3 4 操作系统 6.0 3.0 错4 5 数据结构 7.0 NaN 对5 6 数据处理 NaN NaN 错6 7 pascal语言 6.0 NaN 错
六、数值修改及替换:可用正则表达式进行模糊替换
去除中间空格:变量["列名"]=变量["列名"].str.replace(' ','')
data=pd.read_excel(r'C:\Users\Rhonin\Desktop\课程表.xlsx',dtype={"cname":"string"})dataOut[95]:cno cname cpno ccredit result0 1 数据库 5.0 4 对1 2 数 学 NaN 2 错2 3 信息系统 1.0 4 对3 4 操作系统 6.0 3 错4 5 数据结构 7.0 4 对5 6 数据处理 NaN 2 错6 7 PASCAL语言 6.0 4 错data["cname"]=data["cname"].str.replace(' ','')dataOut[97]:cno cname cpno ccredit result0 1 数据库 5.0 4 对1 2 数学 NaN 2 错2 3 信息系统 1.0 4 对3 4 操作系统 6.0 3 错4 5 数据结构 7.0 4 对5 6 数据处理 NaN 2 错6 7 PASCAL语言 6.0 4 错






