Python数据分析与挖掘操作总结(持续更新...)

一.实现某列的去重,只保留其中一行的数据内容:

使用drop_duplicates方法来实现数据去重,实现方式如下:

test = test.drop_duplicates("标题")

二.删除某一列中含有’万’字的数字,并将其替换为数字:

test1 = test['bofang_num']
p = -1
for i in test['bofang_num']:
    p+=1
    if i.find("万") !=-1:
        print(i)
        i = i.replace("万","")
        i = float(i)*10000
        test['bofang_num'][p] = i
        print(i)
Series可以通过索引值来访问数值!

bool_index = test['bofang_num'].apply(lambda x:True if x.find("万")!=-1 else False)
test.loc[bool_index,"bofang_num"] = test['bofang_num'][bool_index].apply(lambda x:float(x.replace("万",""))*1000)

三.将表按照某一个特征值进行连接:

lis =["data_date_clean.csv","data_info_clean.csv","data_region_clean.csv","related_feature_table.csv"]
first = "Casualties_and_consequences.csv"
df1 = pd.read_csv(str(first),engine="python")   
for li in lis:
    df2 = pd.read_csv(str(li),engine="python")
    df1 = pd.merge(df1,df2,on="eventid")```

四.删除某列下含有缺失值或者指定值的样本

先将指定的样本值都替换维缺失值nan,再统一的删掉nan的数据

#删除缺失值以及为-99的数据
# test_shuzhi_chose.head()
# 将值替换为nan
test_shuzhi_chose_ca = test_shuzhi_chose.replace([int('-99')],[np.nan])
test_shuzhi_chose_ca[test_shuzhi_chose_ca['nperpcap']==-99]
# 再统一删除nan的值
test_shuzhi_chose_ca = test_shuzhi_chose_ca.dropna()

五.通过Pandas将每行的数据保存成csv文件:

# 在每行数据中,
item = {}
df = DataFrame()
for .....
   item['公司名称'] = html.xpath('//*[@id="wap_header_top"]/div[1]/div[1]/div[1]/text()')[0]
   df = df.append(item,ignore_index=True)
df.to_csv('text1.csv')

六.通过Pandas将文本txt转换为列表字符串:

company = pd.read_table('房地产商.txt',engine='python',header=None)
#此处注意,其实用company.values,也能达到列表字符串,但是它会少了第一行
#但是需要有headers=none,表示此文件无索引列名!
for i in company[0]:
    print(i)

七.修改df列名

#将col_1的列名修改为col_a
df = df.rename(columns={'col_1': 'col_a'})

八.根据key值进行合并

res = pd.merge(left, right, on='key')
#没有指定how的话默认使用inner方法
#how的方法还有:
#left
#只保留左表的所有数据
#right
#只保留右表的所有数据
#right
#只保留右表的所有数据
#inner
#只保留两个表中公共部分的信息

九.matplotlib中文标签乱码

# 用来正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']    # 用来正常显示中文标签
# # 用来正常显示负号
plt.rcParams['axes.unicode_minus'] = False

十.TypeError: ‘AxesSubplot’ object is not subscriptable

产生的原因可能是没有指定数据的类型,导致其子元素不能获取指定的下标,只要这样改:

p = data.boxplot(return_type='dict')
# 'flies'即为异常值的标签
x = p['fliers'][0].get_xdata()
y = p['fliers'][0].get_ydata()

十一. values方法

不管是Series,或是DataFrame,对于reshape和sort操作,都要先做.values!

kmodel.fit(data.values.reshape((len(data), 1)))
c = pd.DataFrame(kmodel.cluster_centers_).values.sort(0)

十二. rolling_mean

# python3中没有rolling_mean的方法,需要将其改为rolling.mean
w = pd.rolling_mean(c,2).iloc[1:] # 相邻两项求中点,作为边界点

十四. 将dict转化为dataframe

pd.DataFrame.from_dict(feature_data3['paras'], orient='columns') 

十五. 将不同的dataframe的相同index进行连接

# data1为dataframe类型
data = [data1,data2,data3]

result = pd.concat(data)

十六. 使用dataframe来读取json文件

pd.DataFrame(json.loads(open('para1.json','r+').read()))

十七.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

精神抖擞王大鹏

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

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

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

打赏作者

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

抵扣说明:

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

余额充值