Pandas是Python数据分析库。
Pandas把结构化数据分为了三类:Series、DataFrame、Panel,分别可以理解为 MySQL 表的一列、表、库。
1.引入:
可以使用pycharm搜索安装,超级简单。
import numpy as np
import pandas as pd
2.导入数据或创建数据:
df_1 = pd.read_csv(inF1)
inF1 可以是csv文件的路径。
也可以创建数据,咳咳,这个是从别人那里copy来的,不用在意这些细节。。。
df_1 = pd.DataFrame({'total_bill': [16.99, 10.34, 23.68, 23.68, 24.59], 'tip': [1.01, 1.66, 3.50, 3.31, 3.61], 'sex': ['Female', 'Male', 'Male', 'Male', 'Female']})
3.操作数据
导入的csv和创建的数据都会形成一个DataFrame数据。
DataFrame是表格型数据结构,包含一组有序的列,每列可以是不同的值类型。可以看出MySQL的表。
(1)非常简单的数据提取
print(df[['total_bill', 'tip']])
(2)带点条件的提取
print df[df['total_bill'] > 20]
(3)复杂条件的提取
print df[(df['sex'] == 'Female') & (df['total_bill'] > 20)]
(4)小总结,可以使用任意条件:= > < ! size() count() 等
(5)merge 重要!!!
简单来说就是MySQL里面的join
合并数据集, 通过left, right确定连接字段,默认是两个数据集相同的字段
how 连接方式:‘inner’(默认);还有,‘outer’、‘left’、‘right’
on 用于连接的列名,必须同时存在于左右两个DataFrame对象中,如果位指定,则以left和right列名的交集作为连接键
left_on 左侧DataFarme中用作连接键的列
right_on 右侧DataFarme中用作连接键的列
left_index 将左侧的行索引用作其连接键
right_index 将右侧的行索引用作其连接键
真乱,举个例子!
df_3 = pd.merge(df_1, df_2, on=['id', "name"], how="left")
就是df_1和df_2两个csv文件的数据,想用id和name把这两个数据集关联起来,向df_1看齐。
(6)删除列
merge完后,发现有好多不想要的列,或者说,需求里面没有要
删啊,留着干嘛,等领导说你两句??
df_3.drop(['name2'], axis=1, inplace=True)
把name2这个字段删除了,axis=1删除的是列,为0删除是行,inplace=True在源数据上直接修改。
(7)修改列名
删完发现,有的字段名起的很一般,一看英语就不咋好,让我这8级的给改改吧(自行车水平8级)
df_4 = df_3.rename(columns={'name2': 'nameTwo'})
name2改成了nameTwo,哈哈,很强势,就这么干。
(8)字段内容替换
数据总算看着顺眼多了,可是。。。需求说,把Female改成 Lady (mmp,要这么绅士干什么)
df.replace(to_replace='Female', value='Lady', inplace=True)
搞定!!!
df.loc[df.sex == 'Female', 'sex'] = 'Lady'
这么来也行,效果一样。。。
(9)apply方法使用
第二天,需求又说了,把Female中的Fe改成 Lady ,,,(实际数据要比这个复杂多)
def replaceZeno(replaceZeno):
return str(replaceZeno).replace("Fe", "Lady")
df_4['sex'] = df_4['sex'].apply(replaceZeno)
上边是方法,下边是调用。。。应该很好理解吧。。。
(10)数据导出
df_4.to_csv(outF4, index=False)
outF4 改成自己的输出路径,完事!
总结:额,算了,不写了
一句话,遇到不会的,就往MySQL那边想,都有相对应的实现。
mysql不会??
MySQL从入门到放弃, 了解一下???
交流群:453908562