python | 工作笔记 | pandas 常用总结
2017-09-26 14:48
1036 查看
之前使用pandas处理数据使用的少,最近在实习中经常用到,故自以为把心得总结一番。
说明:有部分是网上查到的案例,觉得很实用,就把它搬过来了。
DataFrame的列名
concat拼接
merge 两个dataframe拼接
计算nan的个数
排序
删除重复记录
使用pandas画图中文显示问题
双坐标轴的图
enumerate函数
时间处理
时间转换为周几周月
画图
一个框中框中画多个图
多个子图
参考网址: http://pandas.pydata.org/pandas-docs/stable/merging.html
具体参考:http://www.cnblogs.com/caicaihong/p/5890239.html
注意keep后面的参数使用。keep=‘frist’:除了第一次出现外,其余相同的被标记为重复。keep=’last’:除了最后一次出现外,其余相同的被标记为重复。keep=False:所有相同的都被标记为重复。
具体参考:http://blog.csdn.net/kancy110/article/details/70142728
这是我多次尝试后发现的方案,很有效果,强烈推荐使用。
得到下标i和数值x
方式二
总结:把常用的总结出来,方便自己使用。
说明:有部分是网上查到的案例,觉得很实用,就把它搬过来了。
DataFrame的列名
concat拼接
merge 两个dataframe拼接
计算nan的个数
排序
删除重复记录
使用pandas画图中文显示问题
双坐标轴的图
enumerate函数
时间处理
时间转换为周几周月
画图
一个框中框中画多个图
多个子图
1.DataFrame的列名
## 方法一:全部修改 df.columns = ['a', 'b', 'c', 'd'] df.columns = df.columns.map(lambda x:x[1:]) df.columns = df.columns.str.strip('$') ## 方法二:可以局部修改 df.rename(columns=('$a': 'a','$e': 'e'}, inplace=True) df.rename(columns=lambda x:x.replace('$',''), inplace=True)
2.concat拼接
## concat拼接,我常用于处理单个列或行后将数据拼接在一起。 hangye_shouyi_ratio = pd.DataFrame() for i in range(1,16): data_hangye_indexa = hangye_index.iloc[:,i+1].values - hangye_index.iloc[:,i].values hangye_shouyi_ratio = pd.concat([hangye_shouyi_ratio,data_hangye_indexa.T],axis=0)
参考网址: http://pandas.pydata.org/pandas-docs/stable/merging.html
3.merge 两个dataframe拼接
# 基于关键词"申万一级行业"拼接两个dataframe pd.merge(hangye_index,chaopei,on='申万一级行业')
4.计算nan的个数
## 计算NAN或缺失值的个数 df.isnull().sum(axis=1) ## 计算非NAN或缺失值的个数 df.null().sum(axis=1)
5.排序
## 排序,降序 table4.sort_values(by='区间累计涨跌幅',ascending=False)
具体参考:http://www.cnblogs.com/caicaihong/p/5890239.html
6.删除重复记录
## duplicated falsei = [] for i,x in enumerate(data_liutong.duplicated(keep = 'first')): if x == False: falsei.append(i) data_liutong = data_liutong.iloc[falsei,:] data_liutong.head(10)
注意keep后面的参数使用。keep=‘frist’:除了第一次出现外,其余相同的被标记为重复。keep=’last’:除了最后一次出现外,其余相同的被标记为重复。keep=False:所有相同的都被标记为重复。
具体参考:http://blog.csdn.net/kancy110/article/details/70142728
7.使用pandas画图:中文显示问题
## 建议把这些内容复制过去,可以保证后面有问题的都可以解决掉 import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties from matplotlib.pylab import mpl mpl.rcParams['axes.unicode_minus'] = False # 解决负号显示异常的问题 my_font = FontProperties(fname=r"C:\\Windows\\fonts\\SimHei.ttf") # 使用指定中文字体 plt.rc('font', family='SimHei', size=8)
这是我多次尝试后发现的方案,很有效果,强烈推荐使用。
8.双坐标轴的图
## 重点:twinx import matplotlib.pyplot as plt import numpy as np plt.clf() # 清空画布 fig = plt.figure(figsize=(8,4)) x = pd.date_range('31/3/2013','30/9/2016',freq='3M') data_stock_hangye_sum_ratio[data_stock_hangye_sum_ratio.index == '计算机'].values[0] y1 = hangye_index[hangye_index.iloc[:,0] == '计算机'].iloc[:,2:17].values[0] y2 = data_stock_hangye_sum_ratio[data_stock_hangye_sum_ratio.index == '计算机'].values[0] ax1 = fig.add_subplot(111) ax1.plot(x,hangye_index[hangye_index.iloc[:,0] == '计算机'].iloc[:,2:17].values[0]) ax1.set_ylabel('计算机行业指数走势') ax1.set_title('计算机行业行情走势与基金持仓占比变化') ax2 = ax1.twinx() ax2.plot(x,data_stock_hangye_sum_ratio[data_stock_hangye_sum_ratio.index == '计算机'].values[0],'r') #ax2.set_xlim(x) ax2.set_ylabel('计算机行业基金持仓占比') ax2.set_xlabel('时间') plt.show()
9.enumerate函数
for i,x enumerate(data): print(i) print (x)
得到下标i和数值x
10.时间处理
## 先将时间的格式统一处理下,再来转换格式 print (datetime.strptime('2013-03-29 0:00',"%Y-%m-%d %H:%M").strftime("%Y-%m-%d"))
11.时间转换为周几、周、月
import pandas as pd from datetime import datetime cal_date = pd.read_csv("D:\\python\\Scripts\\cal_date.csv") ## 几月 cal_date['month'] = pd.DatetimeIndex(cal_date.calendarDate).month ## 周几 cal_date['day'] = pd.DatetimeIndex(cal_date.calendarDate).dayofweek ## 这个月的第几周 cal_date['week'] = pd.DatetimeIndex(cal_date.calendarDate).week
12.画图
一个框中框中画多个图
import matplotlib.pyplot as plt import numpy as np x = np.arange(0., np.e, 0.01) y1 = np.exp(-x) y2 = np.log(x) fig = plt.figure() ax1 = fig.add_subplot(111) # ax1 = plt.plot() ax1.plot(x, y1) ax1.set_ylabel('Y values for exp(-x)') ax1.set_title("Double Y axis") ax2 = ax1.twinx() # this is the important function ax2.plot(x, y2, 'r') ax2.set_xlim([0, np.e]) ax2.set_ylabel('Y values for ln(x)') ax2.set_xlabel('Same X for both exp(-x) and ln(x)') plt.show()
多个子图
方式一import matplotlib.font_manager as fm myfont = fm.FontProperties(fname='C:/Windows/Fonts/msyh.ttc') import matplotlib.pyplot as plt import numpy as np plt.rc('font', family='SimHei', size=8) import matplotlib.pyplot as plt ### 第一张图 plt.clf() # 清空画布 plt.figure(figsize=(16,64),dpi=80) plt.subplot(8,2,1) plt.pie(data_stock_hangye_sum_ratio.mean(axis = 1).values,labels=labels,autopct='%1.1f%%',shadow=False, startangle=90,pctdistance = 1.06) plt.ylabel("基金重仓持股行业平均占比情况(2013Q1-2016Q3)",fontproperties=myfont) # 第二张图 for i in range(len(date)): numbers = int(i + 2) plt.subplot(8,2,numbers) plt.pie(data_stock_hangye_sum_ratio.iloc[:,i].values,labels=labels, autopct='%1.1f%%',shadow=False, startangle=90,pctdistance = 1.06) #plt.xlabel("基金重仓持股行业平均占比情况(2013Q1-2016Q3)",fontproperties=myfont) plt.ylabel("基金重仓持股行业平均占比情况 "+ date[i],fontproperties=myfont) plt.show()
方式二
import matplotlib.pyplot as plt import numpy as np import numpy.random as rnd def f(t): s1 = np.sin(2 * np.pi * t) e1 = np.exp(-t) return np.absolute((s1 * e1)) + .05 t = np.arange(0.0, 5.0, 0.1) s = f(t) nse = rnd.normal(0.0, 0.3, t.shape) * s fig = plt.figure(figsize=(12, 6)) vax = fig.add_subplot(121) hax = fig.add_subplot(122) vax.plot(t, s + nse, '^') vax.vlines(t, [0], s) vax.set_xlabel('time (s)') vax.set_title('Vertical lines demo') hax.plot(s + nse, t, '^') hax.hlines(t, [0], s, lw=2) hax.set_xlabel('time (s)') hax.set_title('Horizontal lines demo') plt.show()
总结:把常用的总结出来,方便自己使用。
相关文章推荐
- Python库--pandas库学习笔记总结
- Pandas工作实践数据处理常用总结
- python入门笔记---常用函数举例和总结
- 【工作笔记一】【转】Visual Studio 2012常用快捷键总结
- python数据处理工具 pandas包常用方法总结(持续更新)
- python笔记之常用命令总结
- python学习笔记17-常用函数总结整理
- 工作笔记之-svn 常用技巧及命令总结
- Python3学习笔记09-python常用方法总结
- [Python] Python学习笔记之常用模块总结[持续更新...]
- Python学习笔记——一些常用函数、常见错误总结
- python 学习笔记12(序列常用方法总结)
- python常用功能总结
- 【python学习笔记】删除pandas DataFrame的某一/几列:
- 【python学习笔记】pandas数据操作,axis遵循“行0列1”原则
- 【图形化编程软件】 sikuli常用函数、简单事件操作 键盘操作 个人总结笔记
- 工作总结---Java后端开发常用工具
- 工作中常用 Git 命令的总结
- Python Numpy,Pandas基础笔记