数据分析基础练习

 111111111111:将数据集中所有信息异常的行删除。  
比如上面的样例中第4行数据只有3个元素,而其他行都有6个元素,所以第4行是信息异常的行,将其删除。
数据集中可能还会存在一些其他异常。  
将全部信息处理之后,每行的元素以逗号为分隔符,写入文件`test1`。


import pandas as pd
import numpy as np
import csv

#现将原始数据加一行,目的:将第一行数据可以进行索引

df=pd.read_csv(r'C:\Users\hk\Desktop\Data.csv')#打开原始数据

for i in range(len(df.index)):#删除元素不为6的row
    li=df.loc[i][0].split()
    if len(li)==6:
        df.loc[i][0]=li
    else:
        df.drop([i],inplace=True)

df.index=range(len(df))#重新整理index

for i in range(len(df)):#100710#删除第三个元素异常的rows
    x=df.loc[i][0][2]		#并将列表转换为str(',' 连接)
    if len(x)<10 and x[0] in '1234567890':
        df.drop([i],inplace=True)
    else:
        df.loc[i][0]=','.join(df.loc[i][0])

df.index=range(len(df))#重新整理index

df.to_csv(r'C:\Users\hk\Desktop\Data1.4.csv',sep=',',quoting=csv.QUOTE_NONE,index=False,header=False)#保存处理的数据
			#(index=False,header=False)作用:不写入index,columns
			#(,sep=',',quoting=csv.QUOTE_NONE) 作用:去除写入时的双引号


2222222222:统计文件`test1`的数据中所有动作的数目并打印到屏幕,然后将动
作数目对100取整后写入`test2`文件,多余的信息行抛弃。

import pandas as pd
import numpy as np

df=pd.read_csv(r'C:\Users\hk\Desktop\text1\Data1.csv',header=None)
#读取step1的values

num=df[1].value_counts()
#获取 动作 列的value_counts的信息

li=['Movement:','Amount:']
df0=pd.DataFrame(columns=range(6))
for i in num.index:
    x=(num[i]//100)*100
    f=df[df[1]==i][:x]
    df0=df0.append(f)
    print(li[0]+i,li[1]+str(x),sep='\t')
#打印将动作数目对100取整后的信息,将取整的前某某行进行整合

df0.to_csv(r'C:\Users\hk\Desktop\test2.csv',header=False,index=False)
#保存整合后的信息,除去行列索引

33333333333:读取文件`test2`的数据,取每行
的后3列元素,以空格为分隔符写入文件`test3`。  

import pandas as pd
import numpy as np

df=pd.read_csv(r'C:\Users\hk\Desktop\text2\data2.csv',header=None)
#获取data2的数据

x=df.loc[:][[3,4,5]]
#提出3,4,5列的所有数据

x.to_csv(r'C:\Users\hk\Desktop\text3\data3.csv',header=False,index=False)
#保存数据,去掉行列索引


44444444444:读取文件`test3`的数据,每行数据为一组,每组组内的元素以
空格为分隔符,组与组之间的数据以逗号为分隔符,每20组元素为一行,

import pandas as pd
import numpy as np

df=pd.read_csv(r'C:\Users\hk\Desktop\text3\data3.csv',header=None)
#读入data3数据


import csv
s=''
c=0
dd=pd.DataFrame()
x=df.values
for i in df.values:               #每读入二十行append()加入到dd生成新
                #的一行,使float变为str,方便操作, 
    c+=1
    st=''
    for n in range(3):
        if n==2:
            st+=str(i[n])
        else:
            st+=str(i[n])+' '
    if c!=20:    
        s+=st+','
    else:
        dd=dd.append([s+st])
        s=''
        c=0   


#sep='$',quoting=csv.QUOTE_NONE  作用:消除字符串化带来的双引号
#header=None,index=False   作用: 不写入行列索引
#


dd.to_csv(r'C:\Users\hk\Desktop\text4\data4.csv',header=None,index=False,sep='$',quoting=csv.QUOTE_NONE)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骑驴_找马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值