import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['figure.dpi'] = 150
# 让 matplotlib 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei']
# 让 seaborn 的文字大一些
sns.set( font='SimHei', font_scale=1.2)
# # 让 MacOS 下的 Matplotlib 与 Seaborn 支持中文
# plt.rcParams['font.family'] = ['Arial Unicode MS']
# sns.set_style('whitegrid',{'font.sans-serif':['Arial Unicode MS','Arial']})
# 用来正常显示负号,这里其实用不上
plt.rcParams['axes.unicode_minus'] = False
df = pd.read_csv("data/2019.csv.zip", parse_dates=['日期时间'], encoding="GBK")
# df.head()
order = [
'少于 3 个月',
'3 个月 至 1 年',
'1 至 2 年',
'3 至 5 年',
'5 年以上',
]
sns.countplot(y='您用 pandas 多久了?',
data=df, order=order,
color='k').set(title="您用 pandas 多久了?",
ylabel="")
sns.despine()
order = [
"刚开始用",
"偶尔",
"每周",
"每天"
]
sns.countplot(y='pandas 使用频率', data=df, order=order,
color='k').set(title="pandas 使用频率",
ylabel="")
sns.despine()
pct_format = "{:0.2%}".format
df['Python 是您的主打语言吗?'].str.replace(
"否.*", "否").value_counts(normalize=True).apply(pct_format)
是 90.67% 否 9.33% Name: Python 是您的主打语言吗?, dtype: object
这里用 0.25 版推出的 explode 方法定义了个函数
def split_and_explode(s):
return s.str.split(";").explode().to_frame()
sns.countplot(y='您常用哪个读写器读取数据?',
data=df['您常用哪个读写器读取数据?'].str.split(';').explode().to_frame(),
color='k').set(title="您常用哪个读写器读取数据?",
ylabel="")
sns.despine();
sns.countplot(y='处理 100 列及以上大型 DataFrame 的频率',
data=df, color='k').set(title="处理大型 DataFrame 的频率",
ylabel="");
sns.despine()
sns.countplot(y='Pandas 满意度',
data=df[['Pandas 满意度']].dropna().astype(int),
color='k').set(title="Pandas 满意度",
ylabel="")
sns.despine();
参考来源 微信公众号: Python大咖谈(id:pythoniao)