<jupyter_start><jupyter_text>必须注意的是，descirbe方法只能针对序列或数据框，一维数组是没有这个方法的<jupyter_code># 自定义一个函数，将这些统计指标汇总在一起：

def status(x) : 
    return pd.Series([x.count(),x.min(),x.idxmin(),x.quantile(.25),x.median(),
                      x.quantile(.75),x.mean(),x.max(),x.idxmax(),x.mad(),x.var(),
                      x.std(),x.skew(),x.kurt()],index=['总数','最小值','最小值位置','25%分位数',
                    '中位数','75%分位数','均值','最大值','最大值位数','平均绝对偏差','方差','标准差','偏度','峰度'])
df = pd.DataFrame(status(d1))
df<jupyter_output><empty_output><jupyter_text>在实际的工作中，我们可能需要处理的是一系列的数值型数据框，如何将这个函数应用到数据框中的每一列呢？可以使用apply函数，这个非常类似于R中的apply的应用方法。 将之前创建的d1,d2,d3数据构建数据框：<jupyter_code>df = pd.DataFrame(np.array([d1,d2,d3]).T, columns=['x1','x2','x3'])
df.head()

df.apply(status)
import matplotlib.pyplot as plt
import matplotlib
matplotlib.style.use('ggplot')
%matplotlib inline<jupyter_output><empty_output><jupyter_text>注：使用pandas创建一个Series（序列），序列值是随机生成的1000个标准正态分布值，索引是从2000-1-1开始的1000个时间序列值<jupyter_code>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.plot()<jupyter_output><empty_output><jupyter_text>可以看出，这个图非常不规则，因为相邻的两个值也是随机大小这里加上了ts = ts.cumsum()，意思是返回累积值，在时间序列分析中，经常观察累积值曲线观察走势.是不是这个累积值看起来规则多了呢?<jupyter_code>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()<jupyter_output><empty_output><jupyter_text>使用pandas创建了一个DataFrame（数据框，有点像excel表格那种），为什么不用刚才的Series呢？划重点啦！因为这里DataFrame中创建了4组数据这4组数据都是随机生成的1000个标准正态分布值索引是从2000-1-1开始的1000个时间序列值并且也是求他们各自的累积值并且画图<jupyter_code>df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD'))
df = df.cumsum()
plt.figure()
df.plot()
list(range(len('xyz')))<jupyter_output><empty_output><jupyter_text>使用DataFrame创建了2组数据，也是1000个标准正态分布，分别命名为B、C（就行excel中列名）并且求累积值再在原来的df（DataFrame的简称）(这里名字是df3）上加上一列名为AA的值是0-999（使用df3的长度为1000，然后range被套列表生成一列数，作为x轴），y轴是B列数据（累积值），c列数据最后绘图没有用上<jupyter_code>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')
# 条形图
# 对于标记的非时间序列数据，你可能希望生成条形图：

import matplotlib
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
matplotlib.style.use('ggplot')#使用ggplot样式
%matplotlib inline

ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
ts = ts.cumsum()
df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD'))
df = df.cumsum()
df
plt.figure();
df.iloc[5].plot(kind='bar')
plt.axhline(0, color='k')

# 注：df.iloc[5]意思是取出df第6行（索引为5），然后绘制条形图
# plt.axhline(0, color='k')指的是在y=0的位置画一条黑色的线
df2 = pd.DataFrame(np.random.rand(10, 4), columns=['a', 'b', 'c', 'd'])
df2.plot.bar()
# 同一幅图绘制多个条形图比较
df2.plot.bar(stacked=True)
# 注：将a、b、c、d数据叠加起来绘制条形图
df2.plot.barh(stacked=True)
# 注：绘制水平叠加条形图<jupyter_output><empty_output><jupyter_text>直方图<jupyter_code>df4 = pd.DataFrame({'a': np.random.randn(1000) + 1, 'b': np.random.randn(1000),
                    'c': np.random.randn(1000) - 1}, columns=['a', 'b', 'c'])
df4.head()

# 注：以标准正态分布为基础产生一个df4
plt.figure()
df4.plot.hist(alpha=0.5)
# 注：绘制直方图，alpha=0.5意思为透明度为50%
# 注：明明有三列数据，画出有六种颜色，应该是是颜色叠加出了新颜色
plt.figure()
df4.plot.hist(stacked=True, bins=20)
# 注：画堆积直方图（不会重叠，直观）bins=20指的是分为20个区段
# 图中没有显示20个因为正态分布距离中心远处取值可能心很小，
# 可能只有个别值，在图中不明显
plt.figure();
df4['a'].plot.hist(orientation='horizontal', cumulative=True)
# 注：取出A列画横向累积直方图，采用默认10个区段
plt.figure()
df['A'].diff().hist()
# 注：diff为差分，即后一个减去前一个,我们看一下：
df['A'].diff().head()
# 注：显示A列中差分结果的前五个数<jupyter_output><empty_output><jupyter_text>注意，第一个值不存在,因为原来的第一个数减去前面一个（第一个的前面一个数不存在），所以为NaN差分后绘制的直方图为（默认为十个区段吧）：...<jupyter_code>plt.figure()
df.diff().hist(color='g', alpha=0.5, bins=20)
# 注：df中四栏（4列）分别绘制一阶差分的图（绿色，半透明，分20区段），
# 有种2x2子图的感觉
data = pd.Series(np.random.randn(1000))
data.hist(by=np.random.randint(0, 4, 1000),figsize=(6, 4))
# 注：这里产生1000个正态分布的随机数，然后使用hist方法中的by参数随机产生0-3中的整数（即0、1、2、3）
# 将原来的1000个正态分布的随机数对应上分组绘制四张图
# 图的长宽大小为6x4<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.18743818001978238, 'fraction_numerical': 0.05192878338278932, 'mean_word_length': 8.298850574712644, 'pattern_counts': {'":': 0, '<': 33, '<?xml version=': 0, '>': 33, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '8', 'dir': 'jupyter-structured-clean-dedup', 'id': '388444', 'license': 'Apache-2.0', 'n_tokens_mistral': 2435, 'n_tokens_neox': 2474, 'n_words': 169, 'path': 'notebook/procs-pandas.ipynb', 'repo_name': 'samlet/stack', 'size': '4044'}