AI智能
改变未来

Pandas/Matplotlib模块


Pandas高级

日期处理

# 需要的模块import timefrom datetime import datetimefrom datetime import timedelta# 获取当前时间now=datetime.now()# 获取 now 的年月日now.date()# 获取 now 的年月日now.time()# 时间戳time.time()# 将当前时间格式化显示now.strftime(\'%Y-%m-%d %H:%M:%S %A %j\')strftime()时间日期格式化符号%y 两位数的年份表示%Y 四位数的年份表示%m 月份%d 月内中的一天%H 24小时制小时数%I 12小时制小时数%M 分钟数%S 秒%j 年内的一天# 字符串格式转化为日期格式time_str= \'北京时间:2020-08-08 09:10:20\'datetime.strptime(time_str,\'北京时间:%Y-%m-%d %H:%M:%S\')# 日期是可以做减法的 比如:time1=datetime(2020,8,23)time2=datetime(2020,6,9)time1-time2结果返回的是:datetime.timedelta(days=75)

合并数据集

pd.merge()合并两个DataFrame参数left要连接的左边的数据right要连接的右边的数据how连接方式(默认inner)\'left\', \'right\', \'outer\', \'inner\'on默认按相同列名称合并,可以用on指定可以多列合并,on=[\'key1\',\'key2\']left_on / right_on没有相同的列,可以用left_on=\'\' right_on=\'\'pd.concat()合并两个Series参数axis:	0:横向连接1:纵向连接join:连接方式(默认:outer)ignore_index: (清除索引,默认不清除)keys:将原参与合并的数据进行标记,标记后会形成多层索引names:给生成的索引取个名称pd.combine_first()以左边非nan为主如果左边的值是nan右边不是,用右边的左边索引上没有的用右边combine()# 保留合并的最大值/最小值

print(df5.combine(df6,func= np.maximum ))
print(df5.combine(df6,func= np.minimum ))

重塑和轴的选择

多重索引index=[list(\'aaaabbbccc\'.upper()),[f\'编号{i}\' for i in range(1,11)]]index=[[\'武器\']*5+[\'法宝\']*5,list(\'aaaabbbccc\'.upper()),[f\'编号{i}\' for i in range(1,11)]]stack()将列索引转会行索引unstack()将行索引转为列索引默认将最内层的行索引转为列索引

函数映射和替换值

unique()对一个Series取唯一的值duplicated()返回一个是否是重复数据的布尔虚空序列~:非在读取一次可以将重复的取出来value_counts()对值计数Series.drop_duplicates()丢掉重复值(默认保留第一个)DataFrame.drop_duplicates()subset = [列1,列2,...]默认所有列相同丢掉keep=\'first\' 保留第一个inplace = \'False\'  不在原值replace()替换值xxx.replace([-999,-1000],[666,400])xxx.replace({-999:666,-1000:777})

数据拆分/异常值筛选和过滤

pd.cut根据区间,求数量,结合值统计 value_counts()x被分割的值bins分箱,可以是数字也可以是list-like的分箱right默认右边闭合,False左边闭合labels给区间起个名字,让值统计更直观retbins默认False, 为True,返回一个区间数组precision默认精度到小数点后三位include_lowest默认False 分割区间,默认不包含最小值,True包含duplicates重复的 默认保留重复值ordered是否排序 默认排序pd.qcut根据数量,求区间,结合值统计 value_counts()X被分割的值q可以是整数等分子主题 4np.sign()取每个数的符号位

读取与写入文件

pd.read_csv()读取csv文件sep以什么符号分隔(默认 , )可以用正则表达式header读取没有明显名称的文件,不需要让首行作为列,用参数header=None指定行数做列名names自定义读取列名称给几个列,就会从最后向前读几列数据,剩下的都是index超出都是nanindex_col给行索引设置个名字skiprows跳过某一行comment表示一个字符在这一行出现就不要na_values需要读取xxx值为nanpd.to_csv()把想存的数据直接调用 to_csv ,就能存进去encoding:指定编码import syssys.stdout:预览to_excel存excel需要调用openpyxl模块read_excel同读取csv参数 多了个sheet_name

数据聚合与分组计算

groupby()按照某个Series 进行分组,返回一个分组后的对象,可以用list()转换查看结构,可以知道分组对象的每个值,分组依据和分组结果参数by按哪一列分组axis按横轴还是纵轴分可以直接使用聚合函数 例如: sum(),mean()

分组计算/apply/透视表

head()取前面几行 默认5行tail()取后面几行copy()复制数据apply()应用一个函数margins添加个人小计

Matplotlib入门

折线图

plt.plot()xx轴坐标yy轴坐标color折线颜色linewidth线条宽度\'go--\'颜色 点位 线条风格markersize点的大小marker点位的形状linestyle线条风格

柱形图/条形图

plt.bar()xx轴坐标yy轴坐标color柱的颜色plt.barh()参数和柱形图一样

直方图

plt.histrwidth每个柱子之间的宽度histtype设置直方图类型

饼状图

plt.pie()startangle起始角度colors颜色labels设置每个扇形图名字shadow阴影explode往出拉点explode=(0,0,0,0.2)autopct=\'%.2f%%\'占整体的百分比labeldistancelabel距离圆心的距离radius基于默认值大的倍数

散点图

plt.scatter()xx轴坐标yy轴坐标s设置点大小c设置点颜色marker设置点形状
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Pandas/Matplotlib模块