网站页面优化,wordpress旺季密码,网络seo是什么工作,在线平面图设计工具主要内容涉及#xff1a;读取数据和保存数据、数据详情信息、数据处理、数据切片、筛选、排序、分组、统计、表格样式
import pandas as pd
import numpy as np读取数据和保存数据
# 2.1 从CSV文件读取数据,编码gbk
pd.read_csv(filename, encodinggbk)# 2.2 读取前6行,当数…主要内容涉及读取数据和保存数据、数据详情信息、数据处理、数据切片、筛选、排序、分组、统计、表格样式
import pandas as pd
import numpy as np
读取数据和保存数据
# 2.1 从CSV文件读取数据,编码gbk
pd.read_csv(filename, encodinggbk)# 2.2 读取前6行,当数据量比较大时可以只读取前n行
pd.read_csv(filename, encodinggbk, nrows 6)# 2.3 第一列作为行索引,忽略列索引
pd.read_csv(filename, encodinggbk, headerNone, index_col0)# 2.4 读取时忽略第1/3/5行和最后两行
pd.read_csv(filename, encodinggbk, skiprows[1,3,5], skipfooter2, enginepython)# 2.5 从限定分隔符,的文件或文本读取数据
dfpd.read_excel(test.xlsx)# 2.6 保存数据
# 保存为csv文件
df.to_csv(test_ison.csv)
# 保存为xlsx文件
df.to_excel(test_xlsx.xlsx,indexFalse)
# 保存为ison文件
df.to_json(test_json.txt)
查看数据信息
dfpd.read_excel(test.xlsx)
# 3.1 查看前n行
df.head(1) 第1股东第1股东对上海青赛生物科技股份有限公司持股比例第2股东对1持股比例第2股东对上海青赛生物科技股份有限公司持股比例第3股东对2持股比例第3股东对上海青赛生物科技股份有限公司持股比例第4股东对3持股比例...第5股东对上海青赛生物科技股份有限公司持股比例第6股东对5持股比例第6股东对上海青赛生物科技股份有限公司持股比例第7股东对6持股比例第7股东对上海青赛生物科技股份有限公司持股比例第8股东对7持股比例第8股东对上海青赛生物科技股份有限公司持股比例0朗润深圳股权投资基金企业有限合伙54.233900%唐春山79.915800%43.341455056200%NaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
1 rows × 23 columns
# 3.2 查看后n行
df.tail(1) 第1股东第1股东对上海青赛生物科技股份有限公司持股比例第2股东对1持股比例第2股东对上海青赛生物科技股份有限公司持股比例第3股东对2持股比例第3股东对上海青赛生物科技股份有限公司持股比例第4股东对3持股比例...第5股东对上海青赛生物科技股份有限公司持股比例第6股东对5持股比例第6股东对上海青赛生物科技股份有限公司持股比例第7股东对6持股比例第7股东对上海青赛生物科技股份有限公司持股比例第8股东对7持股比例第8股东对上海青赛生物科技股份有限公司持股比例361NaNNaN马建民0.387600%0.000804270000%NaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
1 rows × 23 columns
# 3.3 查看行数和列数
df.shape
(362, 23)# 3.4查看列索引
df.columns
Index([第1股东, 第1股东对上海青赛生物科技股份有限公司持股比例, 第2股东, 对1持股比例,第2股东对上海青赛生物科技股份有限公司持股比例, 第3股东, 对2持股比例, 第3股东对上海青赛生物科技股份有限公司持股比例,第4股东, 对3持股比例, 第4股东对上海青赛生物科技股份有限公司持股比例, 第5股东, 对4持股比例,第5股东对上海青赛生物科技股份有限公司持股比例, 第6股东, 对5持股比例, 第6股东对上海青赛生物科技股份有限公司持股比例,第7股东, 对6持股比例, 第7股东对上海青赛生物科技股份有限公司持股比例, 第8股东, 对7持股比例,第8股东对上海青赛生物科技股份有限公司持股比例],dtypeobject)# 3.5 查看行索引
df.index
RangeIndex(start0, stop362, step1)# 3.6 查看索引、数据类型和内存信息
df.info()class pandas.core.frame.DataFrame
RangeIndex: 362 entries, 0 to 361
Data columns (total 23 columns):# Column Non-Null Count Dtype
--- ------ -------------- ----- 0 第1股东 18 non-null object1 第1股东对上海青赛生物科技股份有限公司持股比例 18 non-null object2 第2股东 177 non-null object3 对1持股比例 177 non-null object4 第2股东对上海青赛生物科技股份有限公司持股比例 177 non-null object5 第3股东 53 non-null object6 对2持股比例 53 non-null object7 第3股东对上海青赛生物科技股份有限公司持股比例 53 non-null object8 第4股东 50 non-null object9 对3持股比例 50 non-null object10 第4股东对上海青赛生物科技股份有限公司持股比例 50 non-null object11 第5股东 53 non-null object12 对4持股比例 53 non-null object13 第5股东对上海青赛生物科技股份有限公司持股比例 53 non-null object14 第6股东 49 non-null object15 对5持股比例 49 non-null object16 第6股东对上海青赛生物科技股份有限公司持股比例 49 non-null object17 第7股东 40 non-null object18 对6持股比例 40 non-null object19 第7股东对上海青赛生物科技股份有限公司持股比例 40 non-null object20 第8股东 43 non-null object21 对7持股比例 43 non-null object22 第8股东对上海青赛生物科技股份有限公司持股比例 43 non-null object
dtypes: object(23)
memory usage: 65.2 KB# 3.7 查看数值型列的汇总统计
df.describe() 第1股东第1股东对上海青赛生物科技股份有限公司持股比例第2股东对1持股比例第2股东对上海青赛生物科技股份有限公司持股比例第3股东对2持股比例第3股东对上海青赛生物科技股份有限公司持股比例第4股东对3持股比例...第5股东对上海青赛生物科技股份有限公司持股比例第6股东对5持股比例第6股东对上海青赛生物科技股份有限公司持股比例第7股东对6持股比例第7股东对上海青赛生物科技股份有限公司持股比例第8股东对7持股比例第8股东对上海青赛生物科技股份有限公司持股比例count18181771771775353535050...53494949404040434343unique181817190904532444327...49402440241627201525top朗润深圳股权投资基金企业有限合伙54.233900%唐春山0.16100%0.00592866400%深圳市岭南集团有限公司20.0%0.004469570000%陈学军30.0%...0.0000211753951885736360100%北京嘉德投资集团有限公司8.333300%0.0027324583236090071959154400%黄晓华8.333300%0.0002128055385787285206419288285%黄晓华8.333300%2.125944337956201570825435600E-7%freq112141436535...337741476217
4 rows × 23 columns # 3.8 查看每一列的唯一值和计数
df.apply(pd.Series.value_counts)第1股东第1股东对上海青赛生物科技股份有限公司持股比例第2股东对1持股比例第2股东对上海青赛生物科技股份有限公司持股比例第3股东对2持股比例第3股东对上海青赛生物科技股份有限公司持股比例第4股东对3持股比例...第5股东对上海青赛生物科技股份有限公司持股比例第6股东对5持股比例第6股东对上海青赛生物科技股份有限公司持股比例第7股东对6持股比例第7股东对上海青赛生物科技股份有限公司持股比例第8股东对7持股比例第8股东对上海青赛生物科技股份有限公司持股比例0.000001062977271264921027577456440%NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaN1.00.000001207450824867487200%NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...1.0NaNNaNNaNNaNNaNNaNNaNNaNNaN0.000001468899709513139646978753130%NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaN1.00.0000014758906220506509600%NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaN1.0NaNNaNNaNNaNNaNNaN0.00000186896953122423616800%NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaN1.0NaNNaNNaNNaNNaNNaN..................................................................黄琳NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaN1.0NaNNaN黄运兵NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN黄金泉NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN鼎合厦门科技有限公司NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaN1.0NaNNaNNaNNaNNaN齐杰NaNNaN1.0NaNNaNNaNNaNNaNNaNNaN...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
814 rows × 23 columns
数据处理
# 4.1 重命名列名
df.columns [姓名,性别,语文,数学,英语,城市,省份]# 4.2 选择性更改列名
df.rename(columns{姓名: 姓--名,性别: 性--别},inplaceTrue)# 4.3 批量更改索引
df.rename(lambda x: x 10)# 4.4 批量更改列名
df.rename(columnslambda x: x _1)# 4.5 设置姓名列为行索引
df.set_index(姓名)# 4.6 检查哪些列包含缺失值
df.isnull().any()# 4.7 统计各列空值
df.isnull().sum()# 4.8 删除本列中空值的行
df[df[数学].notnull()]
df[~df[数学].isnull()]# 4.9 仅保留本列中是空值的行
df[df[数学].isnull()]
df[~df[数学].notnull()]# 4.10 去掉某行
df.drop(0, axis0)# 4.11 去掉某列
df.drop(英语, axis1)# 4.12 删除所有包含空值的行
df.dropna()# 4.13 删除行里全都是空值的行
df.dropna(how all)# 4.14 删除所有包含空值的列
df.dropna(axis1)# 4.15 保留至少有6个非空值的行
df.dropna(thresh6)# 4.16 保留至少有11个非空值的列
df.dropna(axis1,thresh11)# 4.17 行数据向下填充
df.fillna(method ffill)# 4.18 列数据向右填充
df.fillna(method ffill,axis1)# 4.19 用0替换所有的空值
df.fillna(0)# 4.20 强制转换数据类型
df_t1 df.dropna()
df_t1[语文].astype(int)# 4.21 查看有多少不同的城市
df[城市].unique()# 4.22 单值替换
df.replace(苏州, 南京)# 4.23 多值替换
df.replace({苏州:南京,广州:深圳})
df.replace([苏州,广州],[南京,深圳])# 4.24 多值替换单值
df.replace([深圳,广州],东莞)# 4.25 替换某列显示需要加inplaceTrue
df[城市] df[城市].replace(苏州, 南京)# 4.26 拆分某列,生成新的Dataframe
df1 df[姓名].str.split(-,expandTrue)
df1.columns [学号,姓名]# 4.27 某一列类型转换注意该列类型要一致包括NaN
df1.dropna(inplace True)
df1[语文] df1[语文].apply(int)
数据切片、筛选
# 5.1 输出城市为上海
df[df[城市]上海]# 5.2 输出城市为上海或广州
df[df[城市].isin([上海,广州])]# 5.3 输出城市名称中含有‘海’字的行
df[df[城市].str.contains(海, naFalse)]# 5.4 输出城市名称以‘海’字开头的行
df[df[城市].str.startswith(海, naFalse)]# 5.5 输出城市名称以‘海’字结尾的行
df[df[城市].str.endswith(海, naFalse)]# 5.6 输出所有姓名缺失值用Null填充
df[姓名].str.cat(sep、,na_repNull)# 5.7 重置索引
df2 df1.set_index(学号)# 5.8 前两行
df2[:2]# 5.9 后两行
df2[-2:]# 5.10 2-8行
df2[2:8]# 5.11 每隔3行读取
df2[::3]# 5.12 2-8行,步长为2即第2/4/6行
df2[2:8:2]# 5.13 选取语文,数学,英语列
df2[[语文,数学,英语]]# df.loc[]只能使用标签索引不能使用整数索引通过便签索引切边进行筛选时前闭后闭
# 5.14 学号为001的行所有列
df2.loc[001, :]# 5.15 学号为001或003的行所有列
df2.loc[[001,003], :]# 5.16 学号为001至009的行所有列
df2.loc[001:009, :]# 5.17 列索引为姓名所有行
df2.loc[:, 姓名]# 5.18 列索引为姓名至‘城市’所有行
df2.loc[:, 姓名:城市]# 5.19 语文成绩大于80的行
df2.loc[df2[语文]80,:]
df2.loc[df2.loc[:,语文]80, :]
df2.loc[lambda df2:df2[语文] 80, :]# 5.20 语文成绩大于80的人的学号和姓名
df2.loc[df2[语文]80,[姓名,城市]]# 5.21 输出赵四和周七的各科成绩
df2.loc[df2[姓名].isin([赵四,周七]),[姓名,语文,数学,英语]]# # df.iloc[]只能使用整数索引不能使用标签索引通过整数索引切边进行筛选时前闭后开
# 5.22 选取第2行
df2.iloc[1, :]# 5.23 选取前3行
df2.iloc[:3, :]# 5.24 选取第2行、第4行、第6行
df2.iloc[[1,3,5],:]# 5.25 选取第2列
df2.iloc[:, 1]# 5.26 选取前3列
df2.iloc[:, 0:3]# 5.27 选取第3行的第3列
df2.iloc[3, 3]# 5.28 选取第1列、第3列和第4列
df2.iloc[:, [0,2,3]]# 5.29 选取第2行的第1列、第3列、第4列
df2.iloc[1, [0,2,3]]# 5.30 选取前3行的前3列
df2.iloc[:3, :3]
数据排序
# 6.1 重置索引
df_last df1.reset_index(dropTrue)# 6.2 按照语文成绩升序排序默认升序排列
df_last.sort_values(语文)# 6.3 按照数学成绩降序排序
df_last.sort_values(数学, ascendingFalse)# 6.4 先按语文成绩升序排列再按数学成绩降序排列
df_last.sort_values([语文,数学], ascending[True,False])# 6.5 语文成绩80及以上
df_last[df_last[语文]80]
df_last.query(语文 80)# 6.6 语文成绩80及以上以及数学成绩90分及以上
df_last[(df_last[语文]80) (df_last[数学]90)]# 6.7 语文成绩80及以上或数学成绩90分及以上
df_last[(df_last[语文]80) | (df_last[数学]90)]# 6.8 输出成绩100的行和列号
row, col np.where(df_last.values 100)# 6.9 增加一列“省份-城市”
df_last[省份-城市] df_last[省份] - df_last[城市]# 6.10 增加一列总分
df_last[总分] df_last[[语文,数学,英语]].sum(axis 1)# 6.11 按照总分、语文、数学、英语成绩依次排序
df_last.sort_values(by [总分,语文,数学,英语],ascendingFalse )# 6.12 新增一列表示学生语文成绩等级的列优秀、良好、中等、不及格
def get_letter_grade(score):定义一个函数根据分数返回相应的等级if score90:return 优秀elif score80:return 良好elif score60:return 中等else:return 不及格df_last[语文等级] df_last[语文].apply(lambda score: get_letter_grade(score))
数据分组
# 7.1 一列分组
df2.groupby(省份).groups# 7.2 多列分组
df2.groupby([省份,城市]).groups# 7.3 每组的统计数据横向显示
df2.groupby(省份).describe()# 7.4 每组的统计数据纵向显示
df2.groupby(省份).describe().unstack()# 7.5 查看指定列的统计信息
df2.groupby(省份).describe()[语文]# 7.6 分组大小
df2.groupby(省份).count()
df2.groupby(省份).agg(np.size)# 7.7 分组成绩最大值
df2.groupby(省份).max()
df2.groupby(省份).agg(np.max)# 7.8 分组成绩最小值
df2.groupby(省份).min()
df2.groupby(省份).agg(np.min)# 7.9 分组成绩总和
df2.groupby(省份).sum()
df2.groupby(省份).agg(np.sum)# 7.10 分组平均成绩
df2.groupby(省份).mean()
df2.groupby(省份).agg(np.mean)# 7.11 按省份分组计算英语成绩总分和平均分
df2.groupby(省份)[英语].agg([np.sum, np.mean])# 7.12 按省份、城市分组计算平均成绩
df2.groupby([省份,城市]).agg(np.mean)# 7.13 不同列不同的计算方法
df2.groupby(省份).agg({语文: sum, # 总和数学: count, # 总数英语:mean}) # 平均# 7.14 性别分别替换为1/0
df2 df2.dropna()
df2[性别] df2[性别].map({男:1, 女:0})# 7.15 增加一列按省份分组的语文平均分
df2[语文平均分] df2.groupby(省份)[语文].transform(mean)# 7.16 输出语文成绩最高的男生和女生groupby默认会去掉空值
def get_max(g):df g.sort_values(语文,ascendingTrue)print(df)return df.iloc[-1,:]df2.groupby(性别).apply(get_max)# 7.17 按列省份、城市进行分组计算语文、数学、英语成绩最大值的透视表
df.pivot_table(index[省份,城市], values[语文,数学,英语], aggfuncmax)
数据统计
# 8.1 数据汇总统计
df.describe()# 8.2 列中非空值的个数
df.count()# 8.3 列最小值
df.min()# 8.4 列最大值
df.max()# 8.5 列均值
df.mean()# 8.6 列中位数
df.median()# 8.7 列与列之间的相关系数
df.corr()# 8.8 列的标准差
df.std()# 8.9 语文成绩指标
# 对语文列求和
sum0 df_last[语文].sum()
# 语文成绩方差
var df_last[语文].var()
# 语文成绩标准差
std df_last[语文].std()
# 语文平均分
mean df_last[语文].mean()print(语文总分:,sum0)
print(语文平均分:,mean)
print(语文成绩标准差:,std)
print(语文成绩方差:,var)# 8.10 三个科目的指标
mean df_last[[语文,数学,英语]].mean()
var df_last[[语文,数学,英语]].var()
total df_last[[语文,数学,英语]].sum()
std df_last[[语文,数学,英语]].std()
rows [total,mean,var,std]
# 索引列表
index [总分,平均分,方差,标准差]
# 根据指定索引和行构造 DataFrame 对象
df_tmp pd.DataFrame(rows,indexindex)表格样式
# 9.1 示例数据
df pd.read_csv(filename, encodinggbk)# 9.2 列重命名
df.columns [姓名,性别,语文,数学,英语,城市,省份]# 9.3 设置空值背景红色
df.style.highlight_null(null_color red)# 9.4 最大数据高亮
df.style.highlight_max()# 9.5 最小数据高亮
df.style.highlight_min()# 9.6 部分列最大数据高亮
df.style.apply(highlight_max, subset[语文, 数学])# 9.7 部分列数据高亮Dataframe全为数据
df3 df[[语文,数学,英语]]
def highlight_max(s):is_max s s.max()return [background-color: yellow if v else for v in is_max]df3.style.apply(highlight_max)# 9.8 95分以上显示红色
def color_negative_red(val):color red if val 95.0 else blackreturn color: %s % colordf3.style.applymap(color_negative_red)# 9.9 混合
df3.style.applymap(color_negative_red).apply(highlight_max)# 9.10 设置float类型列数据大于80.0的背景高亮
yellow_css background-color: yellow
sfun lambda x: yellow_css if type(x) float and x 80.0 else
df3.style.applymap(sfun)# 9.11 设置数学成绩大于80.0分的行背景高亮
yellow_css background-color: yellow
sfun lambda x: [yellow_css]*len(x) if x.数学 80.0 else []*len(x)
df3.style.apply(sfun, axis1)# 9.12 设置数学成绩大于95.0的行数据颜色为红色
def row_color(s):if s.数学 95:return [color: red]*len(s)else:return []*len(s)df3.style.apply(row_color, axis1)# 9.13 显示热度图
import seaborn as sns
cm sns.light_palette(green, as_cmapTrue)
df3.style.background_gradient(cmapcm)
refer