如何用excel对数据进行标准化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用excel对数据进行标准化相关的知识,希望对你有一定的参考价值。
极值处理法该种方法的算法即标准化公式如附图所示,注:对于指标值恒定的情况不适用。
这里以我国2007年中部地区6省的税收数据为例进行计算。易知,附图中的税收指标为极大型数据。所以采用的公式为x=(x-min)/(Max-min),这样标准化后的数据最大值为1,最小值为0
使用Max,Min函数分别求出数据矩阵中每列中的最大值和最小值。
Max 146.1136 184.2366 102.9228 30.2578 25.8857 42.8733 15.656 7.8004 18.2303 14.9975 1.9689 17.1054 35.0698 3.3696
Min 53.0534 95.0788 37.8106 14.8271 2.8286 17.0098 5.7824 3.1799 4.1246 1.1311 0.3081 1.7933 5.5753 0.0874
再求出极值处理法的分母即最大值与最小值的差值
max-min 93.0602 89.1578 65.1122 15.4307 23.0571 25.8635 9.8736 4.6205 14.1057 13.8664 1.6608 15.3121 29.4945 3.2822
4
使用每列中的数值与最小值的差比上分母即可求出标准化后的数据。公式举例:值=(B6-$B$13)/$B$14。如附图所示为使用极值处理法后的前后数据对比。 参考技术A http://jingyan.baidu.com/article/e75aca857cc579142fdac660.html本回答被提问者采纳 参考技术B 回答
excel表格怎么标准化的方法步骤如下:1.单元格减少合并操作合并单元格内容会造成非常严重的问题,公式或者手工操作的时候都会受到影响。2.合计放在第二行大部分表格将合计放在了最后一行,我的建议是放在2行(针对数据源,表格不加大标题,第一行为标题行),这样做的好处在于可以使用统一的sum公式(从3到1048576)。另外数据透视表的辅助公式,建议放在表格的左边,因为透视表的宽度有可能发生大幅度的变化,导致右边的公式被覆盖,放在左边就不会有问题了。3.内容统一每列数据一个表头,若干数据,确保结构统一。比如一个学校的表格,班级列,一会儿用“二班”,一会儿又变成“2班”,搞到后面会晕死的。统一的数据可以使用筛选,分类汇总等功能获得带有小计的表格,但不要在制表的时候仿照它的样式,把"小计"插在表格的中间位置,这种东西最终会把表格的使用者给害了。同时在字与字
4.严格遵守时间、日期格式的输入规范,有时候时间格式参与运算,规范化很重要。数据输入一定注意严格统一数据规范,避免不同人输入不同内容,不利于数据和问题梳理汇总。5.“只输入一次”原则数据只输入一次,需要的时候使用函数(如VlOOKUP)对其引用,而不是再次输入相同的内容。6.数据区分注意特殊属性标注修改单元格颜色,仅仅是辅助标记,但你想指望颜色来对数据进行处理,必须掌握vba才能实现。这会把简单的问题弄复杂,即便求助也不见得有人搭理,当然了,在表格里面使用不同的颜色,还是许可的。
7.工作尽量用公式操作,减少手工动作规范化的表格,公式应该由拖拽形成,量越大,对此操作的要求越高,否则极易出错。这就要求正确设置相对引用、绝对引用、混合引用(搞不清楚的请看我的另一篇文章“Excel相对引用、绝对引用和混合引用,你确定懂了吗?”)。完全由拖拽现成的公式组,你只要有2个数据计算是正确的,即可确保全部结果都正确。遇到过公式掌握欠佳的同事,公式是单独输入的(实际上可做成拖拽输入),两个不同的表,数据完全相同,可结果就是错的。8.整月数据拒绝一天一张表一个月31天,就在一个xls文件内建立31张工作表,初学者很容易出现这种问题,这是大忌。EXCEL有个好东西叫做“数据透视表”,使用他可以很容易的进行汇总,但是如果你是“一日一表”,那就只能慢慢先合并了。
如何用C#的winform程序对Excel表格进行增删修查
如何用C#的winform程序对Excel表格进行增删修查 ,求高手啊!!急!!!!
using System.Data.OleDb;....
void zenshancha(string gongneng)
OleDbConnection cnn=new OleDbConnection();
cnn.ConnectionString= "Microsoft.Jet.OLEDB.4.0;Data Source=Excel 路径;Extended Properties=\\"Excel 8.0;HDR=Yes;IMEX=1\\";
try
cnn.Open();
DataSet ds=new DataSet();
string sql;
switch(gongneng)
case "增加":
sql="Insert Into [表名$](字段名,字段名...)values('"+变量值+"',...)";
break;
case "删除":
sql="Delete * from [表名$] where 条件";
break;
case "查询":
sql="Select * from [表名$]";
break;
default:
MessageBox.Show("执行命令不包含在内!");
break;
OleDbDataAdapter oda=new OleDbAdapter(sql,cnn);
oda.Fill(ds);
dataGridView.DataSource=ds.Tables[0];
private void form_load()
//初始化一个comboBox,让他的下拉列表为操作名称;
private void button1_click(....)
zengshancha(comboBox.Text.Trim()); //执行操作过程
参考技术A 这是过去曾参考应用过的方法摘一段给你应急:
一、首先处理好数据库连接字串
Excel2000-2003: string connStr = "Microsoft.Jet.Oledb.4.0;Data Source='c:\test.xls';Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";";
Excel2007: string connStr = "Microsoft.Ace.OleDb.12.0;Data Source='c:\test.xlsx';Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\";";
其中:
HDR ( Header Row )设置:
若指定值为Yes,代表 Excel 档中的工作表第一行是栏位名称
若指定值为 No,代表 Excel 档中的工作表第一行就是资料了,没有栏位名称
IMEX ( IMport EXport mode )设置
当 IMEX=0 时为"汇出模式",这个模式开启的 Excel 档案只能用来做"写入"用途。
当 IMEX=1 时为"汇入模式",这个模式开启的 Excel 档案只能用来做"读取"用途。
当 IMEX=2 时为"连结模式",这个模式开启的 Excel 档案可同时支援"读取"与"写入"用途。
二、进行表格数据的查询、插入和更新:
(假设Excel文件text.xls中存在Excel表单tree,有2列分别为id,name)
1、查询
String sql = "select id, name from [tree$]";
或
String sql = "select id, name from `tree$`;
2、插入
String sql = "insert into [tree$] (id,name) values(1,'testname');
3、更新
String sql = "update [tree$] set name='name2' where id=1;
4、数据的删除
在OleDB的连接方式下,不可以使用delete from 语句来删除某表中的某一条记录。确切的说,在此模式下,将无法删除表中的记录。即使用update语句将所有的字段写成null,打开excel文件后依然会发现保留了该空行,而且在使用oleDB连接进行查询时,依然会查询到这条空数据。追问
那怎么办? 我还要导入,导出表格!头大啊!!
追答哪能呀,这不是直接读写访问吗?哪里有导入导出操作?!如果你用心找,删除记录方法很多呀,再找了一个,参考一下,相信,我不这样,你也能自己找到的,呵呵。
你一下用了dataGridView控件,那么:
if (dataGridView1.CurrentRow != null) //当前的选中行
string id = dataGridView1.CurrentRow.Cells["id"].Value.ToString();
string sql = "delete ... where id =" + id;
... //执行sql 更新数据库,也就是在数据表中删除选中的行
dataGridView1.Rows.Remove(dataGridView1.CurrentRow) // 这是在界面上删除一行
嗯 ,谢谢, 我再找下,项目要求的是 可以导入表格,还要导出表格,还要把查询的条件结果集导出来,然后再生成图表 --------
追答要采用导入导出的话,发给你一个实例,你设计时参考。见本题的附件。
下面这个方法也供参考,excel就是个数据库
/// <summary>
/// 读取Excel文档
/// </summary>
/// <param name="Path">文件名称</param>
/// <returns>返回一个数据集</returns>
public DataSet ExcelToDS(string Path)
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
DataSet ds = null;
strExcel="select * from [sheet1$]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
ds = new DataSet();
myCommand.Fill(ds,"table1");
return ds;
/// <summary>
/// 写入Excel文档
/// </summary>
/// <param name="Path">文件名称</param>
public bool SaveFP2toExcel(string Path)
try
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
System.Data.OleDb.OleDbCommand cmd=new OleDbCommand ();
cmd.Connection =conn;
//cmd.CommandText ="UPDATE [sheet1$] SET 姓名='2005-01-01' WHERE 工号='日期'";
//cmd.ExecuteNonQuery ();
for(int i=0;i<fp2.Sheets [0].RowCount -1;i++)
if(fp2.Sheets [0].Cells[i,0].Text!="")
cmd.CommandText ="INSERT INTO [sheet1$] (工号,姓名,部门,职务,日期,时间) VALUES('"+fp2.Sheets [0].Cells[i,0].Text+ "','"+
fp2.Sheets [0].Cells[i,1].Text+"','"+fp2.Sheets [0].Cells[i,2].Text+"','"+fp2.Sheets [0].Cells[i,3].Text+
"','"+fp2.Sheets [0].Cells[i,4].Text+"','"+fp2.Sheets [0].Cells[i,5].Text+"')";
cmd.ExecuteNonQuery ();
conn.Close ();
return true;
catch(System.Data.OleDb.OleDbException ex)
System.Diagnostics.Debug.WriteLine ("写入Excel发生错误:"+ex.Message );
return false;
追问
怎么复制下,老是报错!!
参考技术C 大家实现的方法,可能各有千秋,可以取长补短,找去适合自己的方法 参考技术D 我的办法是先excel读入dataset,然后进行修改、显示。完成后导出excel追问怎么导出?
追答用第三方控件gembox
以上是关于如何用excel对数据进行标准化的主要内容,如果未能解决你的问题,请参考以下文章