使用pandas和matplotlib 进行绘图
我们有不同类型的绘图在matplotlib库,可以帮助我们做出一个合适的图,你需要。根据给定的数据,我们可以制作很多图表,在pandas的帮助下,我们可以在绘制数据之前创建一个数据框架。让我们通过使用Pandas来讨论matplotlib中的不同类型的plot。
使用以下命令安装matplotlib, pandas和numpy:
pip install matplotlib
pip install pandas
pip install numpy
绘图类型
基本的绘图
- 在这个基本的绘图中,我们可以使用随机生成的数据来使用series和matplotlib绘制图形。
Python3
# import libraries
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
ts = pd.Series(np.random.randn(1000), index = pd.date_range(
'1/1/2000', periods = 1000))
ts = ts.cumsum()
ts.plot()
plt.show()
输出:
不同数据的曲线图
在一个图表中使用多个数据列表。
Python3
# importing libraries
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
ts = pd.Series(np.random.randn(1000), index = pd.date_range(
'1/1/2000', periods = 1000))
df = pd.DataFrame(np.random.randn(1000, 4),
index = ts.index, columns = list('ABCD'))
df = df.cumsum()
plt.figure()
df.plot()
plt.show()
输出:
在给定轴上绘图
我们可以显式地定义轴的名称,并在此轴的基础上绘制数据。
Python3
# importing libraries
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
ts = pd.Series(np.random.randn(1000), index = pd.date_range(
'1/1/2000', periods = 1000))
df = pd.DataFrame(np.random.randn(1000, 4), index = ts.index,
columns = list('ABCD'))
df3 = pd.DataFrame(np.random.randn(1000, 2),
columns =['B', 'C']).cumsum()
df3['A'] = pd.Series(list(range(len(df))))
df3.plot(x ='A', y ='B')
plt.show()
输出:
使用matplotlib绘制条形图
找到不同类型的条形图,以清楚地理解给定数据的行为。
Python3
# importing libraries
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
ts = pd.Series(np.random.randn(1000), index = pd.date_range(
'1/1/2000', periods = 1000))
df = pd.DataFrame(np.random.randn(1000, 4), index = ts.index,
columns = list('ABCD'))
df3 = pd.DataFrame(np.random.randn(1000, 2),
columns =['B', 'C']).cumsum()
df3['A'] = pd.Series(list(range(len(df))))
df3.iloc[5].plot.bar()
plt.axhline(0, color ='k')
plt.show()
输出:
柱状图
Python3
# importing libraries
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
df4 = pd.DataFrame({'a': np.random.randn(1000) + 1,
'b': np.random.randn(1000),
'c': np.random.randn(1000) - 1},
columns =['a', 'b', 'c'])
plt.figure()
df4.plot.hist(alpha = 0.5)
plt.show()
输出:
使用Series和matplotlib绘制框图
使用Box绘制dataframe的数据。
Python3
# importing libraries
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10, 5),
columns =['A', 'B', 'C', 'D', 'E'])
df.plot.box()
plt.show()
输出:
密度图
Python3
# importing libraries
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10, 5),
columns =['A', 'B', 'C', 'D', 'E'])
ser = pd.Series(np.random.randn(1000))
ser.plot.kde()
plt.show()
输出:
使用matplotlib绘制区域图
Python3
# importing libraries
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10, 5),
columns =['A', 'B', 'C', 'D', 'E'])
df.plot.area()
plt.show()
输出:
散点图
Python3
# importing libraries
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(500, 4),
columns =['a', 'b', 'c', 'd'])
df.plot.scatter(x ='a', y ='b')
plt.show()
输出:
六角形宾格图
Python3
# importing libraries
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(1000, 2), columns =['a', 'b'])
df['a'] = df['a'] + np.arrange(1000)
df.plot.hexbin(x ='a', y ='b', gridsize = 25)
plt.show()
输出:
饼状图
Python3
# importing libraries
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
series = pd.Series(3 * np.random.rand(4),
index =['a', 'b', 'c', 'd'], name ='series')
series.plot.pie(figsize =(4, 4))
plt.show()
输出: