Python读取CSV成数据框并进⾏筛选和相关性检验⼀、第⼀种⽅法读取后为list,再转化为数据框
import csv
frame import DataFrame
csv_ader(open('合并.csv','r'))
content=[]#⽤来存储整个⽂件的数据,存成⼀个列表,列表的每⼀个元素⼜是⼀个列表,表⽰的是⽂件的某⼀⾏
for line in csv_file:
#print(line) #打印⽂件每⼀⾏的信息
content.append(line)
data=DataFrame(content)#转换成数据框
print(data[["⾝份证号"]])
⼆、直接⽤pandas读取成数据框,⼀句话搞定
data =pd.read_csv('D://paper//Python_test//绘图//合并.csv',header=0,index_col=2, encoding="gbk")
设置第1⾏为⾏索引,第3列为列索引,由于⽂件中含有中⽂,因此编码格式为"gbk"
数据框类型便可以直接按⾏按列取值了
三、按⾏取值,即取某⼀列或多列
取列索引为 “策略类别” 和 "学习策略(原始分)"的两列,
df22 =data1[["策略类别","学习策略(原始分)"]]
当然⾏索引也会在其中,去除索引列的⽅法就是再套⼀层:
x2 = df22[["学习策略(原始分)"]]["学习策略(原始分)"]
四、按列的值筛选
按⼀列的值进⾏筛选,⽐如筛选四年级的所有学⽣的分数python怎么读csv数据
df = data.loc[data['年级']==4]
按两列值进⾏筛选
df4 = df.loc[(df['策略类别']=="A")&(df['语⽂类别']=="B")]
五、对列求相关系数矩阵
# 计算各变量之间的相关系数
corr = ()
# print(corr)
# r的显著性检验
# 各个相关系数检验的统计量
def r_test_statistic(r, n):
if r==1:
return0
else:
a =abs(r)
b = np.sqrt((n-2)/(1-r**2))
c = a*b
return c
# 计算各个相关系数检验的统计量
corr_test_stat = corr.applymap(lambda x:r_test_statistic(x,len(data))) print(corr_test_stat)
# 根据显著性⽔平0.05和⾃由度n-2=25-2=23,计算t分布临界值alpha =0.01
t_score = isf(alpha/2, df =len(data)-2)
print(t_score)