Regarding corpus size: If you need meaningful results for the less frequent characters, you'll need a larger corpus, such as the ones at http://corpus.byu.edu.
Their web interface accepts queries consisting of punctuation. A sample query is .|,|:|;|!|?|'|"|@|#|$|%|^|&|*|(|)|-|~
, which for the Contemporary American English, Global Web-based English and Wikipedia corpora produces these frequencies:
COCA GloWbE Wikipedia
1 , 23849941 1 , 83847760 1 , 109960441
2 . 21304861 2 . 80894692 2 ' 79264498
3 " 7008881 3 " 17572733 3 . 73633968
4 ) 1694276 4 ) 8668155 4 # 28560000
5 ( 1688162 5 ( 8337855 5 ( 25894803
6 ? 1620720 6 ? 7853684 6 ) 25851855
7 : 1360298 7 : 6323921 7 * 18572182
8 ' 990783 8 ' 6179597 8 : 10649543
9 ; 782692 9 ! 4029929 9 ; 5709259
10 # 545703 10 ; 2511484 10 - 4912002
11 - 392700 11 - 2228750 11 ! 3248850
12 ! 368622 12 * 137176 12 ? 378872
13 $ 133473 13 @ 66127 13 @ 20287
14 & 109713 14 % 27920 14 % 16899
15 * 81934 15 $ 23881 15 $ 10455
16 @ 74050 16 # 22256
17 % 1761
(The Wikipedia corpus has "
encoded as ''
and uses #
as a special character.)
However, if you need to study digits, capitals, or the symbols [ ] / | < >
, you need to download the corpora and do your own analysis.