C#如何读取数据库表中每一列的数据分别赋值给数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#如何读取数据库表中每一列的数据分别赋值给数组相关的知识,希望对你有一定的参考价值。
首先需要一个连接字符串连接到数据库,然后调用 SqlDataAdapter方法获得数据库的数据,但这样并不会真正获得数据,还要将连接字符串打开,再通过一个SqlCommandBuilder对象将数据填充到一个表中,然后就可以通过这个表获得数据了,下面以获得姓名字段的全部值为例,示例代码如下: string[] name = new string[10];//有多少记录,数组就定义多大,或者使用集合,就不用考虑越界问题了! DataTable student; SqlConnection link=new SqlConnection("Server=玛哈维路-PC;database=软件0902;Persist Security Info=False;Integrated Security=true"); SqlDataAdapter sql=new SqlDataAdapter("select * from 同学信息表", link); SqlCommandBuilder builder=new SqlCommandBuilder(sql); sql.Fill(student); for (int i = 0; i < student.Rows.Count; i++) name[i](student.Rows[i]["姓名"]); //表的外观是二维数组,其实访问时是用数组的数组,前为行,后为行,由于列名确定,行号在变,所以得到肯定是一行!当然也还有其它的写法,这只是一个参考,希望对你有帮助! 参考技术A 首先需要一个连接字符串连接到数据库,然后调用 SqlDataAdapter方法获得数据库的数据,但这样并不会真正获得数据,还要将连接字符串打开,再通过一个SqlCommandBuilder对象将数据填充到一个表中,然后就可以通过这个表获得数据了,下面以获得姓名字段的全部值为例,示例代码如下: string[] name = new string[10];//有多少记录,数组就定义多大,或者使用集合,就不用考虑越界问题了! DataTable student; SqlConnection link=new SqlConnection("Server=玛哈维路-PC;database=软件0902;Persist Security Info=False;Integrated Security=true"); SqlDataAdapter sql=new SqlDataAdapter("select * from 同学信息表", link); SqlCommandBuilder builder=new SqlCommandBuilder(sql); sql.Fill(student); for (int i = 0; i < student.Rows.Count; i++) name[i](student.Rows[i]["姓名"]); //表的外观是二维数组,其实访问时是用数组的数组,前为行,后为行,由于列名确定,行号在变,所以得到肯定是一行!当然也还有其它的写法,这只是一个参考,希望对你有帮助!如何计算python中每一列中缺失的数据?
【中文标题】如何计算python中每一列中缺失的数据?【英文标题】:How to count missing data in each column in python? 【发布时间】:2019-03-22 17:59:15 【问题描述】:我有一个包含 85 列的大型数据框。缺失的数据已编码为NaN
。我的目标是获取每列中缺失数据的数量。所以我写了一个 for 循环来创建一个列表来获取金额。但它不起作用。
以下是我的代码:
headers = x.columns.values.tolist()
nans=[]
for head in headers:
nans_col = x[x.head == 'NaN'].shape[0]
nan.append(nans_col)
我尝试使用循环中的代码通过将head
更改为该列的名称来生成特定列的缺失值数量,然后代码工作并给了我该列中缺失数据的数量。
所以我不知道如何更正 for 循环代码。有人能帮我解决这个问题吗?我非常感谢您的帮助。
【问题讨论】:
您已经将该条目与字符串'NaN
进行了比较,这甚至不是您需要的数据类型。查找isnan
函数以及一般情况下如何检测NaN
值。
@Prune 感谢您的 cmets!我将丢失的数据编码为 np.nan。然后 isnull() 用于查找丢失的数据。
【参考方案1】:
只需使用Dataframe.info,非空计数可能就是您想要的等等。
>>> pd.DataFrame('a':[1,2], 'b':[None, None], 'c':[3, None]) \
.info(verbose=True, null_counts=True)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2 entries, 0 to 1
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 a 2 non-null int64
1 b 0 non-null object
2 c 1 non-null float64
dtypes: float64(1), int64(1), object(1)
memory usage: 176.0+ bytes
【讨论】:
如果您收到'Series' object has no attribute 'info'
的单列,试试这个df['a'].isna().sum()
【参考方案2】:
#function to show the nulls total values per column
colum_name = np.array(data.columns.values)
def iter_columns_name(colum_name):
for k in colum_name:
print("total nulls =".format(k),pd.isnull(data[k]).values.ravel().sum())
#call the function
iter_columns_name(colum_name)
#outout
total nulls start_date= 0
total nulls end_date= 0
total nulls created_on= 0
total nulls lat= 9925
.
.
.
【讨论】:
这可以在没有 df 循环、使用 shade 和 count 或 isnull 的情况下完成【参考方案3】:这会为您提供缺失值的计数(按列名)(打印为 True 后跟计数)
missing_data = df.isnull()
for column in missing_data.columns.values.tolist():
print(column)
print(missing_data[column].value_counts())
print("")
【讨论】:
【参考方案4】:如果有多个数据框 下面是用百分比计算每列中缺失值数量的函数
缺失数据分析
def miss_data(df):
x = ['column_name','missing_data', 'missing_in_percentage']
missing_data = pd.DataFrame(columns=x)
columns = df.columns
for col in columns:
icolumn_name = col
imissing_data = df[col].isnull().sum()
imissing_in_percentage = (df[col].isnull().sum()/df[col].shape[0])*100
missing_data.loc[len(missing_data)] = [icolumn_name, imissing_data, imissing_in_percentage]
print(missing_data)
【讨论】:
偶然发现了这个功能,正在寻找类似的东西,对我不起作用。【参考方案5】:对于 pandas(python 数据分析库)中的列,您可以使用:
In [3]: import numpy as np
In [4]: import pandas as pd
In [5]: df = pd.DataFrame('a':[1,2,np.nan], 'b':[np.nan,1,np.nan])
In [6]: df.isnull().sum()
Out[6]:
a 1
b 2
dtype: int64
对于单列或序列,您可以计算缺失值,如下所示:
In [1]: import numpy as np
In [2]: import pandas as pd
In [3]: s = pd.Series([1,2,3, np.nan, np.nan])
In [4]: s.isnull().sum()
Out[4]: 2
Reference
【讨论】:
以上是关于C#如何读取数据库表中每一列的数据分别赋值给数组的主要内容,如果未能解决你的问题,请参考以下文章